首页 > 代码库 > sizeof()中要注意的小问题
sizeof()中要注意的小问题
char a[] = {‘s‘,‘f‘,‘g‘,‘d‘,‘h‘};
char *b = "sfgdh";
char c[] = "sfgdh";
int a1 = ‘a‘;
char d[6] = {‘s‘,‘f‘,‘g‘,‘d‘,‘h‘};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(c));
printf("%d",sizeof(a1));
printf("%d",sizeof(d));
结果为:
5
4
6
4
6
-----------------------------------------------------------------------------------------------------------------------------------------------
sizeof是求对象在内存中所占的字节数。
sizeof(a):求的是数组a里面总共占的字节数,总字节数需要数组类型和数组元素的个数一块确定其大小。要求元素个数,可以sizeof(a)/sizeof(char)即为元素个数。因为char型占一个字节,所以结果为:5。切记数组名是数组第一个元素的首地址,是常量,a不能进行赋值运算。
sizeof(b):b是一个指针变量,也就是存放地址的变量,不管是什么类型的指针变量所求的sizeof()都是地址所占的内存大小,即为4个字节。
c数组中所表示的数组元素为6,因为最后又一个‘\0’。
sizeof(a1)求的a1这个对象在内存中所需的空间大小,int型需4个字节所以为4.
sizeof(d)是为说明,数组的个数由中括号所给的值决定,如果没给,则按后面大括号元素个数决定。