sizeof 测大小

sizeof 像一把尺子,测类型或变量占多少字节。它通常在编译期就能算出来。

1. 概念与例子

C
1#include <stdio.h>
2 
3int main(void) {
4 printf("char=%zu\n", sizeof(char));
5 printf("int=%zu\n", sizeof(int));
6 double d = 1.0;
7 printf("d=%zu\n", sizeof(d));
8 printf("array=%zu\n", sizeof(int[4]));
9 return 0;
10}

2. 经典技巧:数组元素个数

C
1int a[5] = {1,2,3,4,5};
2int n = (int)(sizeof(a) / sizeof(a[0])); // 5
3/* 注意:数组作为函数参数时会退化成指针,此技巧失效 */

3. 为什么不要写死平台假设

不同架构上 long 宽度可能不同。需要固定宽度时用 int32_t、uint16_t 等(stdint.h)。