[原始标题称为“sizeof函数”。]
我尝试了这些,它们都起作用了:
字符* p;
printf(“* p的大小为%d \ n”,sizeof(* p)); //结果= 1
printf(“p的大小为%d \ n”,sizeof(p)); //结果= 4
printf(“p的大小为%d \ n”,sizeof(&p)); //结果= 4
我想知道为什么第一个printf是1,第二个和第三个是4?
那么sizeof可以实际接受哪些参数呢?
最佳答案
它需要一种类型。sizeof(char)
始终为1。变量p
本身是一个指针,并且在您的平台上其大小为4。然后您执行&p
,或指向大小也为4的指针的指针。
在大多数现代台式机系统上,32位体系结构将具有4个字节的指针,而64位体系结构将具有8个字节的指针。sizeof
本身是一个在编译时解析的关键字,而不是函数。在C99中,数组的长度可以是可变的,并且sizeof将等待运行时解析此大小。
关于c - C中的sizeof运算符采用什么参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1557362/