4.2 复合语句
复合语句 (Compound Statement) 是用花括号包裹的一组声明与语句,也常被称为“块”。它不仅是排版工具,更是作用域和存储期的边界。
1. 基本语法
c
{
声明序列
语句序列
}1
2
3
4
2
3
4
进入块时,块内自动存储期对象开始生效;离开块时,它们的生命周期结束。这个规则决定了资源管理、错误处理和局部封装的写法。
2. 复合语句与作用域
c
#include <stdio.h>
int main(void) {
int x = 1;
{
int y = 2;
printf("%d %d\n", x, y);
}
printf("%d\n", x);
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
输出:
bash
1 2 1
y 只在内层块可见。把逻辑切分成小块,既能限制名字泄露范围,也能让生命周期贴近使用点。
3. 空复合语句
{} 也是合法语句。它常用于占位、宏展开兼容或分支对齐。虽然语义简单,但若频繁出现空块,通常说明控制流可以重构得更清晰。
4. 使用建议
即使控制分支当前只有一条语句,也优先使用复合语句。这样在后续扩展时不会破坏结构,也能避免“悬垂 else”等经典陷阱。
5. 声明与语句交错
现代 C 允许在复合语句中把声明和普通语句交错书写。这样可以把对象声明放在首次使用附近,减少“声明处离使用处过远”的阅读负担。
c
{
step1();
int code = step2();
if (code != 0) {
handle(code);
}
}1
2
3
4
5
6
7
2
3
4
5
6
7
当对象生命周期应尽量短时,这种写法通常更清晰。