sizeof
https://baike.baidu.com/item/sizeof/6349467?fr=aladdin
https://blog.csdn.net/u012520854/article/details/53511154
对 sizeof() 的处理都是在编译阶段进行;
在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符;
1、sizeof 数组指针
(1) 数组:如果是数组首地址,sizeof会输出数组所占地址空间的大小(字节为单位);
一般指针:如果是一个指针的话,则输出在该系统中地址的字节宽度,即(位宽/8)。
(2) 如果是通过函数传递过来的地址,那么sizeof会把数组首地址和指针无差别当成是地址。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
void test_sizeof_addr(char *a) { printf("%d\n", sizeof(a)); } void test_sizeof_array(char a[]) { printf("%d\n", sizeof(a)); } int main() { char b[30]; test_sizeof_addr(b); test_sizeof_array(b); return 0; }
2、sizeof() 类与对象
数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址;
3、sizeof 自定义结构体struct
4、sizeof() 与 strlen() 区别;