C 语言简介
C 是一种:
- 面向过程(Procedure-Oriented)
- 编译型(Compiled)
- 静态类型(Static Typed)
- 接近底层(Low-level)
- 高性能
的编程语言。
由 Dennis Ritchie 在贝尔实验室开发。
现代操作系统、数据库、嵌入式系统、大量编程语言(如 C++、Java、Go、Rust)都深受 C 影响。
1. Hello World
c
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
2. 变量与赋值
基本变量
c
int age = 18;
float price = 9.9;
char grade = 'A';
变量修改
c
int x = 10;
x = 20;
常量
c
const int MAX = 100;
3. 数据类型
数字类型
| 类型 | 说明 |
|---|---|
| int | 整数 |
| float | 单精度浮点 |
| double | 双精度浮点 |
| char | 字符 |
| long | 长整数 |
示例
c
int a = 10;
double pi = 3.14159;
char c = 'H';
4. 算数运算
c
int a = 10;
int 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); // 取余
5. 逻辑运算
| 运算符 | 含义 |
|---|---|
| && | 与 |
| ! | 非 |
示例
c
int age = 20;
if (age > 18 && age < 30) {
printf("青年\n");
}
6. 比较运算
| 运算符 | 含义 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
7. if 判断
c
int score = 85;
if (score >= 90) {
printf("优秀\n");
} else if (score >= 60) {
printf("及格\n");
} else {
printf("不及格\n");
}
8. switch 分支
c
int day = 2;
switch(day) {
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
default:
printf("未知");
}
9. for 循环
c
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
10. while 循环
c
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
11. 数组(C 的"列表")
C 没有真正的 List。
通常用:
- 数组(Array)
- 链表(Linked List)
代替。
数组
c
int nums[5] = {1,2,3,4,5};
printf("%d\n", nums[0]);
遍历数组
c
for (int i = 0; i < 5; i++) {
printf("%d\n", nums[i]);
}
12. 字符串
C 没有真正的字符串类型。
本质是:
c
char str[] = "hello";
实际上是:
['h','e','l','l','o','\0']
\0 表示字符串结束。
13. 结构体(Struct)
C 没有 class。
通常使用 struct。
c
struct Person {
char name[20];
int age;
};
使用结构体
c
struct Person p;
p.age = 18;
14. 函数
定义函数
c
int add(int a, int b) {
return a + b;
}
调用函数
c
int result = add(3, 5);
15. 指针(C 最核心特性)



6
指针是 C 最重要、最底层的概念。
地址
c
int a = 10;
printf("%p", &a);
&a 表示变量地址。
指针变量
c
int *p = &a;
含义:
p 保存 a 的内存地址
通过指针修改变量
c
*p = 20;
等于:
c
a = 20;
16. 指针为什么重要
因为:
- 数组
- 字符串
- 函数参数
- 动态内存
- 文件系统
- 操作系统
本质都依赖指针。
17. 动态内存 malloc/free
c
#include <stdlib.h>
int *arr = malloc(5 * sizeof(int));
free(arr);
含义
malloc:
在堆内存申请空间
free:
手动释放内存
18. C 的"集合"和"Map"
C 标准库没有:
- Set
- Map
- Dictionary
通常需要:
- 自己实现
- 使用第三方库
常见替代方案
| 需求 | C中的实现 |
|---|---|
| List | 数组 / 链表 |
| Set | 哈希表 |
| Map | 哈希表 |
| Queue | 队列结构 |
| Tree | 二叉树 |
19. 文件操作
c
FILE *fp = fopen("test.txt", "r");
fclose(fp);
20. 异常处理
C 没有:
try / catch
常见方式
返回错误码
c
int divide(int a, int b) {
if (b == 0) {
return -1;
}
return a / b;
}
使用 errno
c
#include <errno.h>
21. typedef(类型别名)
c
typedef unsigned long ulong;
22. enum 枚举
c
enum Color {
RED,
GREEN,
BLUE
};
23. 宏 define
c
#define PI 3.14
宏函数
c
#define SQUARE(x) ((x) * (x))
24. 头文件
c
#include <stdio.h>
作用:
导入函数声明
类似:
- Java import
- Python import
25. C 的编译过程



6
.c源文件
↓
预处理
↓
编译
↓
汇编
↓
链接
↓
可执行文件
26. GCC 编译
Linux/macOS
bash
gcc main.c -o app
运行:
bash
./app
Windows(MinGW)
bash
gcc main.c -o app.exe
27. C 最特殊的地方(重点)
① 指针
这是 C 的灵魂。
c
int *p;
很多现代语言都把这个东西隐藏了。
② 手动内存管理
c
malloc()
free()
程序员自己管理内存。
优点:
- 极致性能
- 极致控制
缺点:
- 容易内存泄漏
- 容易崩溃
③ 非常接近硬件
C 可以:
- 操作内存
- 操作寄存器
- 操作CPU
- 写驱动
- 写操作系统
④ 没有真正的"高级特性"
C 没有:
- 类
- 泛型
- 反射
- GC垃圾回收
- async/await
因此:
简单
但底层
28. C 与其它语言的关系



5
很多语言语法都来自 C:
| 语言 | 与 C 的关系 |
|---|---|
| C++ | C 的扩展 |
| Java | 模仿 C 语法 |
| Go | 简化版 C 风格 |
| Rust | 安全版 C |
| JavaScript | C 风格语法 |
29. 学习 C 最重要的几个概念
建议重点掌握:
- 指针
- 内存
- 数组
- 函数
- struct
- 编译过程
- malloc/free
30. 一句话总结
C 语言的本质:
"用最少的抽象,
直接控制计算机硬件。"
它既是:
- 现代编程语言之父
也是:
- 操作系统世界的基础语言。