您的位置:首页 > 其它

sizeof是关键字还是运算符

2014-10-30 17:25 309 查看
sizeof是一个关键字还是运算符?在看资料的时候有人说是关键字有人说是运算符,把我搞得一塌糊涂。最后还是自己得出了个结论也不知道对于不对,但至少它不是函数。

首先关键字的定义:关键字是有特殊含义的标示符,表示系统已经占用,程序员不能将自己的变量定义为这个标示符。是从词法角度上的理解。

运算符:在执行期间计算用的。貌似没什么冲突。。。。。

再后来看到一个比较合理的解释:来自于The C Programming Language

The following identifiers are reserved for the use as keywords, and may not be used otherwise:

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

C provides a compile-time unary operator called sizeof that can be used to compute the size of any object.

第一段说sizeof是一个keyword关键字,第二个说是一个operator运算符。所以它是一个关键字但是同时还是一个运算符。

struct{
short a1;
short a2;
}A;
struct{
long b1;
short b2;
}B;
int mian(){
char *ss1 = "01234567879";
char ss2[] = "01234567879";
char ss3[100] = "01234567879";
int ss4[100];
char q1[]="abc";
char q2[]="a\n";
char *q3 = "a\n";
return 0;
}
sizeof(ss1) = 4;ss1是一个指针类型,指针大小一个定值32位机器上是4个字节。

sizeof(ss2)=11;末尾有\0

sizeof(ss3)=100;

sizeof(ss4)=400

sizeof(q1)=4;同ss2

sizeof(q2)=3;\n是换行号占一位

sizeof(q3)=4;//同ss1

sizeof(A)=4;

sizeof(B)=8;//结构体内的参数会采用对齐的方式存储简单的数就是位数要统一成最多位数的整数倍,A里面的都是short类型的占2个字节所以sizeof(A)=4,对于B里面的采取对齐时都采用long类型的大小为4B因此结果为8B。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: