另一方面,sizeof用于以字节为单位计算变量或数据类型的长度。
这是运算符,是单个操作数,如- -。
例如在我的电脑上,sizeof(int )=4,sizeof (long )=4。 还有一般要求的sizeof(char )=1。
二.序列和指针中sizeof的特性
C语言的指针在具有强大功能的同时,也引起了很多混乱。 众多迷茫中的一个是sizeof相对于数组和指针的不同。
归纳起来,有以下两点。
1对于直接调用sizeof,如果是数组的起始地址,sizeof将以字节为单位输出数组所占的地址空间的大小。 对于指针,输出到系统的地址的字节宽度,即(位宽度/8)。
以下代码将生成输出4,30 (一个char占用一个字节空间),4 )。
int *a; char b[30]; char *c; printf('%d,%d,dn ',sizeof(a ),sizeof(a ),sizeof(a ) );
对于通过2函数传递的地址,sizeof会将数组的起始地址和指针没有差异视为地址。
以下代码段输出4、4
voidtest_sizeof(a_addr(char*a ) printf ) ' %dn ',sizeof ) ); } void test _ sizeof (a _ array (chara [ ] ) printf('%dn”,sizeof ); (}int main ) ) { char b[30]; test_sizeof_addr(b ); test_sizeof_array(b ); 返回0; }此外,编译器在编译时会显示以下警告:
warning :‘sizeof’onarrayfunctionparameter‘a’willreturnsizeof‘char *’[-wsize of-array-argument ]。