为什么结果是:
sizeof(function_name)?
1
?社区中有人说sizeof(main)
为1但sizeof(main())
为4.此处main
返回int
,因此它返回4.但如果我们声明为{{1}而不是char main()
它只返回1。
答案 0 :(得分:3)
在函数上使用sizeof
是违法的。
C99§6.5.3.4
sizeof
运算符
sizeof
运算符不应用于具有函数类型的表达式 不完整的类型,这种类型的括号名称,或表达式 指定一个位字段成员。
因此,如果foo
是函数名称,则sizeof(foo)
是非法的,但sizeof(foo())
会对sizeof
的返回值应用foo()
。 main()
在标准C中返回int
,在今天的大多数机器上都是4个字节。
答案 1 :(得分:0)
sizeof(char)
等于1
,无处不在。
所以声明char
的所有内容也会这样做,这已经在编译时了。