sizeof 计算函数大小的有关问题。
sizeof 计算函数大小的问题。。。
输出是:
sizeof(f): 1
sizeof(f()): 4
请问这个是怎么回事, 如果函数名是地址,为什么sizeof出来是1????
------解决方案--------------------
标准里规定sizeof不能用于
函数名
void类型
所以这个结果是不确定的,依赖于编译器(爱怎么)实现(就怎么实现)。
------解决方案--------------------
至于你这个1的结果我觉得应该是编译扩展的结果,要知道函数名只代表一个入口地址,是没有类型的,对这个没有类型可言的使用sizeof运算符是不合符逻辑的
- C/C++ code
#include <stdio.h> int f() { int a, b; a = b = 0; return 0; } int main() { printf("sizeof(f): %d\n", sizeof(f)); printf("sizeof(f()): %d\n", sizeof(f())); return 0; }
输出是:
sizeof(f): 1
sizeof(f()): 4
请问这个是怎么回事, 如果函数名是地址,为什么sizeof出来是1????
------解决方案--------------------
标准里规定sizeof不能用于
函数名
void类型
所以这个结果是不确定的,依赖于编译器(爱怎么)实现(就怎么实现)。
------解决方案--------------------
至于你这个1的结果我觉得应该是编译扩展的结果,要知道函数名只代表一个入口地址,是没有类型的,对这个没有类型可言的使用sizeof运算符是不合符逻辑的