在C中打印main()

时间:2014-06-03 14:05:47

标签: c printf main

所以我得到了这个小块代码。主要功能是打印主要功能。什么印刷?这是某种地址吗?

int main() {
   printf( "%d", main ) ;
 }

5 个答案:

答案 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段。尝试写这个地址,你应该得到一个错误。