第一章:C语言简介
1.1 C语言的历史
C语言是由美国贝尔实验室的Dennis Ritchie于1972年发明的。它的设计初衷是为了在Unix操作系统上开发系统软件。由于其简洁、高效、可移植性强等优点,C语言迅速成为全球最受欢迎的编程语言之一。
1.2 C语言的特点
- 简洁明了:C语言语法简洁,易于理解。
- 高效性:C语言编写的程序执行效率高。
- 可移植性:C语言编写的程序可以在多种操作系统上运行。
- 强大的功能:C语言提供了丰富的库函数和工具,可以完成各种复杂任务。
第二章:C语言基础
2.1 数据类型
C语言提供了多种数据类型,如整型、浮点型、字符型等。
#include <stdio.h>
int main() {
int age = 25;
float height = 1.75f;
char name = '张';
printf("年龄:%d\n", age);
printf("身高:%f\n", height);
printf("姓名:%c\n", name);
return 0;
}
2.2 变量与常量
变量是存储数据的地方,常量是固定不变的值。
#include <stdio.h>
int main() {
int num = 10;
const float PI = 3.14159f;
printf("数字:%d\n", num);
printf("圆周率:%f\n", PI);
return 0;
}
2.3 运算符
C语言提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符等。
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("加法:%d\n", a + b);
printf("减法:%d\n", a - b);
printf("乘法:%d\n", a * b);
printf("除法:%d\n", a / b);
printf("关系运算:%d\n", a > b);
return 0;
}
第三章:控制流
3.1 条件语句
条件语句用于根据条件判断执行不同的代码块。
#include <stdio.h>
int main() {
int age = 18;
if (age >= 18) {
printf("已成年\n");
} else {
printf("未成年\n");
}
return 0;
}
3.2 循环语句
循环语句用于重复执行一段代码。
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 5; i++) {
printf("循环:%d\n", i);
}
return 0;
}
第四章:函数
4.1 函数定义
函数是C语言中的基本组成部分,用于封装代码块。
#include <stdio.h>
void sayHello() {
printf("你好,世界!\n");
}
int main() {
sayHello();
return 0;
}
4.2 函数调用
函数调用是指使用函数名和参数来执行函数内的代码。
#include <stdio.h>
void sayHello() {
printf("你好,世界!\n");
}
int main() {
sayHello();
return 0;
}
第五章:指针
5.1 指针的概念
指针是存储变量地址的变量,是C语言中强大的特性之一。
#include <stdio.h>
int main() {
int age = 18;
int *ptr = &age;
printf("年龄:%d\n", *ptr);
return 0;
}
5.2 指针与数组
指针可以与数组一起使用,实现数组元素的遍历等操作。
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr;
for (int i = 0; i < 5; i++) {
printf("数组元素:%d\n", *(ptr + i));
}
return 0;
}
第六章:结构体与联合体
6.1 结构体
结构体是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。
#include <stdio.h>
typedef struct {
char name[50];
int age;
float height;
} Person;
int main() {
Person person;
strcpy(person.name, "张三");
person.age = 25;
person.height = 1.75f;
printf("姓名:%s\n", person.name);
printf("年龄:%d\n", person.age);
printf("身高:%f\n", person.height);
return 0;
}
6.2 联合体
联合体是一种特殊的数据类型,可以存储多个不同类型的数据,但同一时间只能存储其中一个。
#include <stdio.h>
typedef union {
int i;
float f;
char c[10];
} UnionType;
int main() {
UnionType ut;
ut.i = 10;
printf("整型:%d\n", ut.i);
ut.f = 3.14f;
printf("浮点型:%f\n", ut.f);
strcpy(ut.c, "联合体");
printf("字符型:%s\n", ut.c);
return 0;
}
第七章:文件操作
7.1 文件概念
文件是存储在磁盘上的数据集合,C语言提供了丰富的文件操作函数。
7.2 文件打开与关闭
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "w");
if (fp == NULL) {
printf("文件打开失败\n");
return -1;
}
fprintf(fp, "这是一个示例文件\n");
fclose(fp);
return 0;
}
7.3 文件读写
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
printf("文件打开失败\n");
return -1;
}
char ch;
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
fclose(fp);
return 0;
}
第八章:动态内存分配
8.1 动态内存分配概念
动态内存分配是C语言中的一项重要特性,用于在运行时分配内存。
8.2 使用malloc函数
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(10 * sizeof(int));
if (arr == NULL) {
printf("内存分配失败\n");
return -1;
}
for (int i = 0; i < 10; i++) {
arr[i] = i;
}
for (int i = 0; i < 10; i++) {
printf("数组元素:%d\n", arr[i]);
}
free(arr);
return 0;
}
第九章:网络编程
9.1 网络编程概念
网络编程是指使用C语言编写网络应用程序的过程。
9.2 套接字编程
套接字编程是网络编程中的核心技术,用于实现网络通信。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
printf("创建套接字失败\n");
return -1;
}
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8080);
servaddr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) {
printf("绑定失败\n");
return -1;
}
listen(sockfd, 10);
int connfd;
while ((connfd = accept(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr))) != -1) {
char buffer[1024];
read(connfd, buffer, sizeof(buffer));
printf("客户端:%s\n", buffer);
write(connfd, "HTTP/1.1 200 OK\r\n\r\n", 25);
close(connfd);
}
close(sockfd);
return 0;
}
第十章:C语言高级特性
10.1 指针与函数
指针可以与函数一起使用,实现函数指针和回调函数等特性。
#include <stdio.h>
void add(int a, int b) {
printf("加法:%d + %d = %d\n", a, b, a + b);
}
void callFunction(void (*func)(int, int), int a, int b) {
func(a, b);
}
int main() {
callFunction(add, 3, 4);
return 0;
}
10.2 预处理器
预处理器是C语言中的一个重要特性,用于在编译前处理源代码。
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int arr[MAX_SIZE];
for (int i = 0; i < MAX_SIZE; i++) {
arr[i] = i;
}
for (int i = 0; i < MAX_SIZE; i++) {
printf("数组元素:%d\n", arr[i]);
}
return 0;
}
第十一章:C语言资源推荐
11.1 教程网站
- 菜鸟教程:http://c.biancheng.net/
- C语言中文网:http://c.biancheng.net/
- CSDN:https://blog.csdn.net/
11.2 书籍推荐
- 《C程序设计语言》:作者:Brian W. Kernighan 和 Dennis M. Ritchie
- 《C和指针》:作者:Stephen Prata
- 《C陷阱与缺陷》:作者:Andrew Koenig
11.3 视频教程
总结
通过以上章节,我们学习了C语言的基础知识、控制流、函数、指针、结构体与联合体、文件操作、动态内存分配、网络编程、C语言高级特性等内容。希望这些内容能够帮助您入门C语言编程,并在进阶过程中不断取得进步。
最后,祝愿您在C语言编程的道路上越走越远,成为一位优秀的程序员!
