sizeof运算符

    本以为自己对sizeof掌握的还不错,结果还是会因为粗心大意而错误。

1)sizeof不是函数,也不是运算符,它是一个类似宏定义的特殊关键字。sizeof后面跟类型(如int)需要加括号,跟变量不需要括号。

2)int ival = 4; 计算sizeof(a)的时候,不论a的值是什么,都会被替换成sizeof(int),结果为4。

3)如果是int ival = 4; sizeof(ival = 5); 呢? 语句执行结束后,ival的值为5。和sizeof(a)一样,被替换为sizeof(int)。需要注意,ival=5是不会被编译的。所以ival的值依旧为4。

4)对函数调用sizeof。sizeof(fun()); 在编译阶段,sizeof的操作数会被函数的返回值所取代。也就是说计算的是函数返回值的大小。

 

下面的代码,我大意算错了:空格害死粗心人啊,那个二维字符数组的大小也比较雷人,不留心机会计算错误。

char a[] = "abcdf ";
int b[20] = {3,4};
char c[2][3] = {"aa ", "bb "};
cout << sizeof(a) << endl;      //7,注意空格和'\0'
cout << sizeof(b) << endl;	//20*4
cout << sizeof(c) << endl;	//6
posted on 2010-06-07 19:58  ︶ㄣ第二名  阅读(912)  评论(3编辑  收藏  举报