sizeof 测大小
sizeof 像一把尺子,测类型或变量占多少字节。它通常在编译期就能算出来。
1. 概念与例子
| 1 | #include <stdio.h> |
| 2 | |
| 3 | int 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. 经典技巧:数组元素个数
| 1 | int a[5] = {1,2,3,4,5}; |
| 2 | int n = (int)(sizeof(a) / sizeof(a[0])); // 5 |
| 3 | /* 注意:数组作为函数参数时会退化成指针,此技巧失效 */ |
3. 为什么不要写死平台假设
不同架构上 long 宽度可能不同。需要固定宽度时用 int32_t、uint16_t 等(stdint.h)。