02 · 程序结构与基础语法
令牌(Token)—— 编译器眼里最小的有意义单位
关键字 · 标识符 · 常量 · 字符串字面量 · 运算符 · 分隔符
一个完整程序的结构
#include <stdio.h> // 1. 预处理器指令(头文件包含)
#define PI 3.14159 // 2. 宏定义
int add(int a, int b); // 3. 函数声明(原型)
int main(void) { // 4. 主函数:唯一入口
int num1, num2, sum; // 5. 变量声明
printf("Enter two integers: ");
scanf("%d %d", &num1, &num2); // 6. 用户输入(注意 & 取地址)
sum = add(num1, num2); // 7. 函数调用
printf("Sum: %d\n", sum);
return 0; // 8. 返回语句
}
int add(int a, int b) { // 9. 函数定义
return a + b;
}
分隔符与注释
- 分号
;是语句结束符 —— 最容易漏的就是它。 {}代码块、()条件/参数、[]数组下标、,分隔。- 注释两种:
// 单行(C99 起)、/* 多行 */。注释不能嵌套。
标识符规则
- 只能由字母、数字、下划线组成,首字符不能是数字。
- 区分大小写:
Manpower≠manpower。 - ❌ 非法:
2abc(数字开头)、my-name(有连字符)、float(关键字)。 - 以
__开头的名字被编译器/标准库保留,别用。
常量两种写法(推荐 const)
const int MAX = 100; // 有类型,编译期检查,推荐
#define MAX 100 // 宏,纯文本替换,无类型检查
字符串字面量的本质(Java 程序员最该记住的一条)
"Hello" // 内存里实际是 'H','e','l','l','o','\0' —— 6 个字节!
- 末尾自动加
'\0'(null 终止符),这是 C 字符串的全部秘密。 - 字面量存在只读区,不可修改;要改就复制到字符数组。
'A'(字符常量,1 字节) 和"A"(字符串,2 字节 'A'+'\0')不是一回事。
运算符分类(详见 05-运算符)
算术 + - * / % · 关系 == != > < · 逻辑 && || ! · 位 & | ^ ~ << >> · 赋值 = += · 自增自减 ++ -- · 其他 sizeof ?: & * -> .
关联
01-C简介与环境 · 03-数据类型与变量 · 05-运算符 · 11-字符串