sizeof是关键字还是运算符

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值