可能重复:
为什么 C 中函数的大小总是 1 个字节?
考虑以下代码片段C
:
double fn()
{
return 1.1 ;
}
int main()
{
printf( "%d", sizeof( fn ) );
return 0;
}
输出是:
1
为什么 sizeof() 运算符输出 1 个字节?
可能重复:
为什么 C 中函数的大小总是 1 个字节?
考虑以下代码片段C
:
double fn()
{
return 1.1 ;
}
int main()
{
printf( "%d", sizeof( fn ) );
return 0;
}
输出是:
1
为什么 sizeof() 运算符输出 1 个字节?
sizeof
运算符不应应用于函数。它是没有意义的,它的行为没有定义。
大小运算符不应应用于具有函数或不完整类型的表达式,...
sizeof 运算符不得应用于具有函数类型或不完整类型的表达式、此类类型的括号名称或指定位字段成员的表达式。
参考:ISO/IEC 9899:1999(第 6.5.3.4 节)
sizeof 运算符可能不适用于:
- 一个位域
- 函数类型
- 未定义的结构或类
- 不完整的类型(如 void)
参考:http: //publib.boulder.ibm.com/
当您sizeof
在函数上使用时,它的值是没有意义的,如此处所述Why is the size of a function in C always 1 byte?
要获取返回值的大小,请尝试使用sizeof(fn())
,因为sizeof
它是编译时常量(在大多数情况下),fn
但实际上不会被调用。
然而,不幸的是,要获得函数占用的字节大小是不可能的。如果您告诉我们您真正想要完成的工作,我们可能会帮助您做更多事情。