sizeof是关键字而不是函数。 即使不知道是否是32个关键字之一,也可以使用编译器来确定身份。 让我们看看以下情况。
a )、sizeof(int ); b )、sizeof(I ); c )、sizeof int; d )、sizeof i;32位系统下:
首先,很明显a、b都是4。 在Visual C 6.0或其他编译器中尝试:
C错误syntaxerror:‘type”但是d输出结果也可以在4. sizeof之后没有括号,但是sizeof绝对不是函数,因为函数之后必须没有括号。
sizeof是关键词,不是说没有后面的括号也可以吗? 那么,请想想sizeof int表示什么。 在int之前添加关键字吗? 类型扩展? 显然是不正确的。 可以在int之前加上unsigned、const等关键字,但不能加上sizeof。 是的,请记住。 sizeof在计算变量所占空间的大小时可以省略括号,但在计算类型(类型)的大小时不能省略括号。 一般来说,我们也不会偷这个懒,而是干脆写个括号,继续假装“函数”,做个“披着函数外衣的关键词”。
然后,查看以下表达式的值: (在32位系统下) )。
int *p=NULL; //请勿在此处写为Null或Null
Sizeof(p )是多少?
Sizeof(*p )多少钱?解答:
sizeof(p )表示指针自身所占空间的大小,32位下为4.sizeof ) p )表示指针所指数据类型所占的大小,整数型也可以是4. int a[100]; sizeof(a )、sizeof ) a[100]、sizeof ) a )、sizeof ) a[0]的值分别是多少?解答:
首先sizeof(a明显是数组整体的大小,所以400 sizeof(a[100]为4,a[100]是表示第100个要素的下一个要素,使用sizeof(a[100]也不会出错的理由是sizeof ) 函数的评估在运行时进行,关键字sizeof的评估在编译时进行。 虽然不存在名为a[100]的元素,但这里也不是实际访问a[100],而是仅根据数组元素的类型来确定值。 sizeof(a )为4,表示内存地址空间的大小,在Visual C 6.0中输出为400,编译器可能将a和a等同,但它们的值相同,但意义不同。 sizeof(a(0) )取第一个元素的地址,为4intb(100 );
voidfun(intb[100] )
{
Sizeof(b ); //Sizeof(B )的值是多少?
} 解答:
还是4。 实际上,以数组作为参数时,不区分int b[100]和int b[],相当于int *b。 因此,sizeof(b )是指针的大小。 分享: 0http://www.Sina.com/http://www.Sina.com /金额自由快点“打”我哦~
http://www.Sina.com/http://www.bcoder.cn/p=1435
用微信OR支付宝扫描二维码bcoder编程学习网《C语言sizeof是关键字还是函数?》