数组的分配和访问
基本原则
数据类型 T 和整型常数 N
T A[N];
- 连续存储在大小为
L * sizeof(T)字节的空间内 - 数组引用
A[i]等价于*(A + i)
指针运算
p 为指向数据类型 T 的指针,且值为 x,则 p + i 的值为 x + sizeof(T) * i
嵌套数组(多维数组)
- 在内存中按照行优先的顺序排列
结构和联合
对齐
- 一般原则:基本数据类型的大小为 K 字节,则其存储地址必须为 K 的整数倍
结构体 struct
- 连续分配的内存区域,内部各个域通过名字访问
- 各个域依声明顺序存放
结构体的对齐
- 必须满足结构体中各个元素的对齐要求
- 结构自身的对齐要求等同于各个元素中对齐要求最高的对齐要求,设为 K
- 结构的起始地址和结构长度都必须是 K 的整数倍
联合 union
成员共享一块内存,大小由最大的成员大小决定。
结构体的返回
caller 在栈上开辟空间,callee 直接在该空间上创建结构体。
结构体的传入
直接通过栈传递。