最冤枉的关键字-sizeof

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.5,最冤枉的关键字----sizeof

1.5.1,常年被人误认为函数

sizeof 是关键字不是函数,其实就算不知道它是否为32 个关键字之一时,我们也可以借助编译器确定它的身份。看下面的例子:

int i=0;

A),sizeof(int);B),sizeof(i);C),sizeof int;D),sizeof i;

毫无疑问,32 位系统下A),B)的值为4。那C)的呢?D)的呢?

在32 位系统下,通过Visual C++6.0 或任意一编译器调试,我们发现D)的结果也为4。咦?sizeof 后面的括号呢?没有括号居然也行,那想想,函数名后面没有括号行吗?由此轻易得出s izeof 绝非函数。

好,再看C)。编译器怎么怎么提示出错呢?不是说s izeof 是个关键字,其后面的括号可以没有么?那你想想s izeof int 表示什么啊?int 前面加一个关键字?类型扩展?明显不正确,我们可以在i nt 前加u nsigned,const 等关键字但不能加s izeof。好,记住:sizeof 在计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下,咱也

。做我的关别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字”

键字,让人家认为是函数去吧。

1.5.2,sizeof(int)*p 表示什么意思?

sizeof(int)*p 表示什么意思?留几个问题(讲解指针与数组

时会详细讲解),32 位系统下:int *p = NULL;

sizeof(p)的值是多少?

sizeof(*p)呢?

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) 的值是多少?}

相关文档
最新文档