数组的分配和访问

基本原则

数据类型 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 直接在该空间上创建结构体。

结构体的传入

直接通过栈传递。