我只是尝试一个例子,当一个地址作为sizeof
运算符中的参数传递时我试图检查输出,我输出为4.现在我的问题是当你在sizeof运算符中传递指针时为什么它显示4个字节的内存实际上没有指针变量时,它只是一个地址?
#include<stdio.h>
int main()
{
int a=1;
int c;
c=sizeof(&a);
printf("%d\n",c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是因为sizeof返回一个类型的大小,按照C11 6.5.3.4 The sizeof and _Alignof operators /2我的强调:
sizeof运算符产生其操作数的大小(以字节为单位),该操作数可以是表达式或类型的带括号的名称.大小由操作数的类型确定.
的类型的&a,其中a的一个int是由覆盖6.5.3.2 Address and indirection operators /3在相同的标准:
一元运算
&符产生其操作数的地址.如果操作数的类型为"type",则结果的类型为"指向类型的指针".
换句话说,int a; sizeof(&a)在功能上等同于sizeof(int *).