sizeof详解

sizeof是不是关键字

sizeof是关键字,这一点毋庸置疑。你不能将sizeof定义为任何标识符。查看C语言标准文档里的说明:

sizeof是运算符(操作符)吗

答案是:YES
C语言中,sizeof是运算符(操作符),而且是唯一一个以单词形式出现的运算符,它用来计算存放某一个量需要占用多少字节,它的结合性是从右到左。查看C语言标准文档里的说明:

sizeof的运用

我们一般用sizeof的场合为:

memset(数组名,,sizeof(数组名));

大家发现没有,sizeof是要带括号的。

所以,一些蒟蒻就会跳出来说:

sizeof是函数

其实不然,我们看看下面这个例子。

#include<cstdio>
using namespace std;
int main()
{
	int i = 0;
	printf("%d %d %d\n",sizeof(int),sizeof(i),sizeof i);
	return 0;
}

输出:

4 4 4

我们可以看出sizeof i竟然可以编译并运行通过,函数调用必定带括号的,由此看来,sizeof其实是关键字。

我们再来看一段程序

short *sp = NULL;
printf("%d %d\n",sizeof(sp),sizeof(*sp));
int *ip = NULL;
printf("%d %d\n",sizeof(ip),sizeof(*ip));

输出:

4 2
4 4

明显带上*就是计算指针指向的 值的类型大小,而指针无论是何类型,都是4个字节

还有一个例子:

#include<cstdio>
using namespace std;
void fun(int b[100])
{
	printf("%d\n", sizeof(b));
}
int main()
{
	int b[100];
	fun(b);
	return 0;
}

输出:

4

PS:这里涉及到数组名在函数中退化的问题,即在函数中作为形参是,退化为一个指针,故求出来的大小为4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值