前言
C语言是一种高效、灵活的通用编程语言,由Dennis Ritchie于1972年在贝尔实验室开发。它广泛应用于操作系统(如Linux、Windows内核)、嵌入式系统、游戏开发等领域。本文将从基础语法到高级特性,系统性地总结C语言的核心知识,适合初学者快速掌握,也适合开发者复习巩固。
2. C语言基础
2.1 第一个C程序
#include <stdio.h> // 标准输入输出头文件
int main() { // 主函数,程序入口
printf("Hello, World!\n"); // 输出语句
return 0; // 返回0表示程序正常结束
}
-
#include <stdio.h>
:引入标准输入输出库,支持printf
、scanf
等函数。 -
main()
:程序的唯一入口,必须返回int
类型值(通常0
表示成功)。 -
printf()
:格式化输出函数,\n
表示换行。
2.2 基本语法规则
-
区分大小写:
int
是关键字,Int
不是。 -
语句以分号结尾:
int a = 10;
-
注释:
// 单行注释
/* 多行
注释 */
3. 数据类型与变量
3.1 基本数据类型
类型 | 关键字 | 大小(字节) | 示例 |
---|---|---|---|
整型 | int | 4 | int a = 10; |
短整型 | short | 2 | short b; |
长整型 | long | 4/8 | long c; |
字符型 | char | 1 | char ch='A'; |
单精度浮点 | float | 4 | float f=3.14; |
双精度浮点 | double | 8 | double d; |
3.2 变量与常量
-
变量声明:
int age = 20; // 变量
const float PI = 3.14; // 常量(不可修改)
#define MAX 100 // 宏常量(预处理阶段替换)
-
命名规则:
-
由字母、数字、下划线组成,不能以数字开头。
-
不能使用关键字(如
int
、return
)。
-
4. 运算符
4.1 算术运算符
int a = 10, b = 3;
a + b; // 13
a - b; // 7
a * b; // 30
a / b; // 3(整数除法)
a % b; // 1(取余)
a++; // 自增(a=11)
b--; // 自减(b=2)
4.2 关系与逻辑运算符
int x = 5, y = 10;
x == y; // 0(假)
x != y; // 1(真)
x > y; // 0
x < y; // 1
!x; // 0(逻辑非)
x && y; // 1(逻辑与)
x || y; // 1(逻辑或)
4.3 位运算符
unsigned char a = 0b0011, b = 0b0101;
a & b; // 0b0001(按位与)
a | b; // 0b0111(按位或)
a ^ b; // 0b0110(异或)
~a; // 0b1100(取反)
a << 2; // 0b1100(左移2位)
b >> 1; // 0b0010(右移1位)
5. 控制结构
5.1 条件语句
if (score >= 90) {
printf("A");
} else if (score >= 60) {
printf("B");
} else {
printf("C");
}
5.2 循环语句
// for循环
for (int i = 0; i < 10; i++) {
printf("%d ", i);
}
// while循环
int j = 0;
while (j < 10) {
printf("%d ", j);
j++;
}
// do-while循环
int k = 0;
do {
printf("%d ", k);
k++;
} while (k < 10);
5.3 switch-case
int day = 3;
switch (day) {
case 1: printf("Monday"); break;
case 2: printf("Tuesday"); break;
default: printf("Unknown");
}
6. 函数
6.1 函数定义与调用
// 定义函数
int add(int a, int b) {
return a + b;
}
// 调用函数
int result = add(3, 5); // result=8
6.2 递归函数
int factorial(int n) {
if (n == 0) return 1;
return n * factorial(n - 1);
}
printf("%d", factorial(5)); // 120
7. 数组与字符串
7.1 数组
int arr[5] = {1, 2, 3, 4, 5}; // 静态数组
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
7.2 字符串
char str1[] = "Hello"; // 自动补'\0'
char str2[10] = {'H', 'i', '\0'};
printf("%s", str1); // Hello
8. 指针
8.1 基本指针操作
int num = 10;
int *p = # // p指向num的地址
printf("%d", *p); // 10(解引用)
8.2 指针与数组
int arr[3] = {1, 2, 3};
int *ptr = arr; // ptr指向arr[0]
printf("%d", *(ptr + 1)); // 2(等同于arr[1])
8.3 动态内存分配
int *p = (int*)malloc(5 * sizeof(int)); // 分配5个int空间
free(p); // 释放内存
9. 结构体与文件操作
9.1 结构体
struct Student {
char name[20];
int age;
};
struct Student s1 = {"Alice", 20};
9.2 文件操作
FILE *fp = fopen("test.txt", "w"); // 打开文件
fprintf(fp, "Hello, File!"); // 写入
fclose(fp); // 关闭
总结
C语言的核心内容包括:
-
基础语法(变量、运算符、控制结构)。
-
函数与指针(核心难点)。
-
内存管理(动态分配、释放)。
-
文件与结构体(数据持久化与组织)。
学习建议:
-
多动手写代码(如实现排序算法、链表)。
-
阅读经典开源项目(如Linux内核)。
-
理解指针和内存管理机制。