首页 > 代码库 > 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)是为说明,数组的个数由中括号所给的值决定,如果没给,则按后面大括号元素个数决定。