快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

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的操作数会被函数的返回值所取代。也就是说计算的是函数返回值的大小。

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

  1 char a[] = "abcdf ";

  2 int b[20] = {3,4};

  3 char c[2][3] = {"aa ", "bb "};

  4 cout << sizeof(a) << endl;      //7,注意空格和'\0'

  5 cout << sizeof(b) << endl;  //20*4

  6 cout << sizeof(c) << endl;  //6

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论