sizeof:运算符还是函数?

时间:2010-10-17 19:20:43

标签: c sizeof

  

可能重复:
  Why is sizeof an operator?

为什么sizeof应该是C中的运算符,&不是功能

它的用法与函数调用类似,如sizeof(int)

它应该是某种伪函数吗?

5 个答案:

答案 0 :(得分:5)

因为它不是一个功能;编写一个可以将类型作为参数并返回其大小的函数是不可能的!另请注意,sizeof是在编译时实现的,如果您在变量上使用括号,则不需要括号。

答案 1 :(得分:3)

在运行时评估函数调用。 sizeof必须在编译时进行评估(尽管C99引入了一些例外情况,我相信)

答案 2 :(得分:2)

C中的函数无法完成sizeof。

根据定义,函数在运行时被分配空间,并且只能对数据进行操作。

虽然sizeof也适用于数据类型,但它们是特定于编译器的。函数不知道如何解释数据类型“int”并按设计询问编译器的大小。

在C99 sizeof完全编译之前,但在新标准中,它也可用于在运行时获取信息,用于可变长度数组。

答案 3 :(得分:1)

函数是您可以在运行时调用的函数。 sizeof只能由编译器理解。

答案 4 :(得分:1)

sizeof在合理时间而不是执行时间有效。输入诸如sizeof(int)之类的类型时只需要()但是如果'i'是int类型你可以做sizeof i