为什么sizeof(function_name)是1

时间:2014-02-21 14:19:46

标签: c sizeof

为什么结果是:

sizeof(function_name)?

1?社区中有人说sizeof(main)为1但sizeof(main())为4.此处main返回int,因此它返回4.但如果我们声明为{{1}而不是char main()它只返回1。

2 个答案:

答案 0 :(得分:3)

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

  

C99§6.5.3.4sizeof运算符

     

sizeof运算符不应用于具有函数类型的表达式   不完整的类型,这种类型的括号名称,或表达式   指定一个位字段成员。

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

答案 1 :(得分:0)

sizeof(char)等于1,无处不在。

所以声明char的所有内容也会这样做,这已经在编译时了。