为什么sizeof
应该是C中的运算符,&不是功能?
它的用法与函数调用类似,如sizeof(int)
。
它应该是某种伪函数吗?
答案 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