[原始标题称为“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/

10-16 00:16