所以我得到了这个小块代码。主要功能是打印主要功能。什么印刷?这是某种地址吗?
int main() {
printf( "%d", main ) ;
}
答案 0 :(得分:5)
是的,函数名称的计算结果为地址。如果没有函数调用操作符()
,则不会进行调用。
但这不是有效代码,%d
不是函数指针的有效格式说明符(并且return
缺失)。不幸的是,打印函数指针is not very simple to get right。
答案 1 :(得分:0)
假设函数fn()
printf("%d",fn());
将其返回值打印为十进制int。如果返回的东西不是int,编译器可能会抱怨。
printf("%d",fn);
将其地址打印为int。编译器可能会抱怨函数指针到int的转换。
打印地址的正确方法是:
printf("%p",variable);
编辑: 但是,正如Pascal和其他人所提到的,%p仅对指向对象的指针有效,因此没有正确的方法来打印函数的地址。
答案 2 :(得分:-1)
它将打印main的地址。它就像你试图打印任何正常函数的地址一样简单。
答案 3 :(得分:-1)
编译器将显示错误。
答案 4 :(得分:-1)
这将以十进制格式打印函数main()的地址。您应该使用%x而不是%d。当编译器编译程序时,它会创建许多内存段,但所有代码都会进入.text段,这是一个只读段。所以这个地址来自.text段。尝试写这个地址,你应该得到一个错误。