c - 为什么 sizeof(function_name) 是 1

标签 c sizeof

为什么结果是:

sizeof(function_name)?

1 ?社区里有人说sizeof(main)是 1 但 sizeof(main())是 4。这里 main正在返回int ,所以它返回 4。但是如果我们声明为 char main()而不是int main()它只会返回 1。

最佳答案

在函数上使用 sizeof 是非法的。

C99 §6.5.3.4 The sizeof operator

The sizeof operator shall not be applied to an expression that has function type or an incomplete type, to the parenthesized name of such a type, or to an expression that designates a bit-field member.

因此,如果 foo 是函数名称,则 sizeof(foo) 是非法的,但 sizeof(foo()) 适用 foo() 返回值上的 sizeofmain() 在标准 C 中返回 int,在当今大多数机器上它是 4 个字节。

关于c - 为什么 sizeof(function_name) 是 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936951/

相关文章:

c - 为什么我的输入重定向不起作用?

c - 如何创建结构数组,其中结构的最后一个元素是 struct hack

Rust:如何在编译时或其他方式获取 sizeof::<T>?

c - 新的(可能在 4.17 中)linux 内核 max 宏是如何工作的?

c - 通过外部库传递变量

c - C题中的冒泡排序

C - 计算二维数组中空元素数量的错误结果

c++ - 在 sizeof(++n) 表达式中不调用增量运算符

C++:数组和 sizeof

c - C sizeof() 如何返回这些值