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