龙空技术网

C语言中被冤枉的关键字sizeof()怎么用?

技术小企鹅 650

前言:

当前你们对“c语言sizeof是什么意思”都比较珍视,各位老铁们都想要分析一些“c语言sizeof是什么意思”的相关内容。那么小编在网上网罗了一些对于“c语言sizeof是什么意思””的相关资讯,希望朋友们能喜欢,咱们快快来学习一下吧!

sizeof()关键字

sizeof()怎么用?很多刚刚接触sizeof总以为是一个函数,因为它后面有括号。接下来我们一起来剖析一下这个被冤枉的关键字。其实我们不知道他是32个关键字的其中一个,我们也可以利用其它的办法来确定他到底是不是函数,首先来看下面的代码:

int i=0;

(A)sizeof(int) ; (B)sizeof(i);

(C)sizeof int; (D)sizeof i;

可以很肯定的是(A)(B)的值都是4,那你想一想(C)(D)的值到底是多少呢?感兴趣的可以先在自己的编译器上打一下代码来验证自己的想法。

在32位的系统中通过visual C++6.0或者任意编译器的调试我们其实都可以发现(D)的值也是4,到这里你是不是觉得很奇怪,为什么sizeof不用括号同样可以计算出来,同样的在这里你就应该把它和函数区分开来,很清楚地知道他其实真的不是函数,如果是函数你觉得吧后面的括号省略掉也可以运行吧?我们想不可能吧!最后我们来看看最后一个(C)的情况,我想如果不出意外的话应该是搬一起报错了吧?本着遇到错误就解决错误的心理,我们来探讨一下为什么他会出错,我们好好地看一下C答案表示的是什么意思:(C)sizeof int 这是什么玩意?int的前面加一个关键字?表示什么我们不知道,但是明显不正确,一般在int前面我们都会加 unsigned 、const 等关键字,但是真的不能加sizeof。

记住

sizeof在计算变量所占的空间大小时,括号其实是可以省略的。一般情况下sizeof是在编译的时候求值(C99计算柔性数组所占空间情况除外),所以sizeof(i++)并不会引起什么坏的后果,但是没有意义呀,因为i和i++的类型一样,所以就没有必要写这样迷惑的代码。“sizeof(i="123456")”,这样的代码也是不被允许的,因为i还是原来的值并不会在括号里面把它赋值为123456,总之你要注意的一点就是sizeof里面的括号不要哦有任何的运算符。

自测题

在这里我们一起来共同探讨几个比较有意思的C语言笔试题目如果你觉得毫无压力那么恭喜你,你对sizeof的理解以及比较透彻:

int *p=NULL;

sizeof(p); 的值是多少?

sizeof(*p);呢?

int a[100];

sizeof(a);的值是多少?

sizeof(a[100]);呢? //注意是本列的代码

sizeof(&a);这样呢?

sizeof(&a[0]);还有这样的呢?

int b[100];

int fun (int b[100])

{sizeof(b);} 这样的值又是多少?

在这里还是很希望各位能够慢慢地把这几道笔试题做出来,技术就是不断的日积月累加油各位!

标签: #c语言sizeof是什么意思 #c语言中sizeof是什么