先做个选择题:sizeof是关键字还是函数呢?
请看以下这例:
int i=0;
A),sizeof(int); B),sizeof(i); C),sizeof int; D),sizeof i;
毫无疑问,32 位系统下A),B)的值为4。那C)的呢?D)的呢?
调试后发现,D)也是4,而C)是出错?
因为函数名后面没有括号是不行的哦~所以sizeof是关键字,不是函数~
记住:sizeof 在计算变量所占空间大小时,括号可以省略,
而计算类型(模子)大小时不能省略。
小练习:考考你对sizeof掌握了没?
(以下在32位机系统下eclipse编译)
int *p = NULL;
char *q=NULL;
sizeof(p)的值是多少?
sizeof(p)的值是多少?
sizeof(*p)呢?
sizeof(q)呢?
sizeof(*q)呢?
int a[100];
sizeof (a) 的值是多少?
sizeof(a[100])呢?
sizeof(&a)呢?
int a[100];
sizeof (a) 的值是多少?
sizeof(a[100])呢?
sizeof(&a)呢?
sizeof(&a[0])呢?
int b[100];
void fun(int b[100])
{
sizeof(b); // sizeof (b) 的值是多少?
}
int b[100];
void fun(int b[100])
{
sizeof(b); // sizeof (b) 的值是多少?
}
不同编译环境可能有所不同,欢迎跟帖交流~
( ⊙ o ⊙ )啊!答案在下面哦~
答案:
sizeof(p)=4
sizeof(*p)=4
sizeof(q)=4
sizeof(*q)=1
sizeof(*q)=1
sizeof(a)=400
sizeof(a[100])=4
sizeof(&a)=4
sizeof(&a[0])=4
sizeof(b)=4
sizeof(a[100])=4
sizeof(&a)=4
sizeof(&a[0])=4
sizeof(b)=4