Jeju's blog

你好,世界! Hello, world!

what's C?

好的,我们来系统地复习一下《C程序设计语言(第二版)》(即ANSI C版本)的核心知识点。这本书由C语言之父Dennis Ritchie和Brian Kernighan编写,是学习C语言的圣经。

我们将按照书籍的大致结构,分为以下几个核心部分进行复习:


第一部分:基础语法与结构

1. 第一个程序与编译运行

#include <stdio.h> // 预处理指令,包含标准输入输出库

int main() {      // 主函数,程序入口
    printf("hello, world\n"); // 输出语句
    return 0;      // 返回值,0表示成功
}

2. 变量、数据类型与常量

3. 运算符与表达式

4. 控制流


第二部分:函数与程序结构

1. 函数定义与调用

// 函数声明(原型)
int max(int a, int b);

// 函数定义
int max(int a, int b) {
    return a > b ? a : b;
}

// 调用
int result = max(10, 20);

2. 预处理器


第三部分:指针与数组

1. 指针

2. 数组

3. 字符串

4. 复杂声明与指针进阶


第四部分:结构体、联合与内存管理

1. 结构体 (struct)

// 声明变量 struct point p1 = {1, 2}; struct point p2 = {.y=2, .x=1}; // C99指定初始化器

// 通过指针访问成员 struct point pp = &p1; (pp).x = 10; pp->x = 10; // 等价写法

- 结构体可以嵌套,可以包含数组、指针甚至其他结构体。
- 结构体大小可能包含填充字节(内存对齐)。

#### 2. 联合 (union)
- 所有成员共享同一块内存(大小由最大成员决定)。
```c
union data {
    int i;
    float f;
    char str[20];
};

3. 枚举 (enum)

4. 动态内存管理


第五部分:输入输出与文件操作

1. 标准输入输出

2. 文件操作


第六部分:高级话题与最佳实践

1. 可变参数函数

2. 库函数

3. 常见陷阱与最佳实践


总结

要牢固掌握ANSI C,必须理解:

  1. 指针和内存管理:这是C的核心与难点。
  2. 数组与指针的关系:理解它们之间的等价性和差异。
  3. 函数和程序结构:如何组织代码,使用头文件。
  4. 标准库:熟练使用常用库函数。

最好的复习方法是结合实践