C中的函数main可以返回一个指针吗?

时间:2012-06-11 12:16:49

标签: c

随着标题的进行,main函数是否可以返回指针?如果是,那么哪里有用?谢谢!

3 个答案:

答案 0 :(得分:7)

标准只允许返回类型int

  

5.1.2.2.1程序启动

     

1程序启动时调用的函数名为main。实施宣布否   这个功能的原型。它应该使用返回类型int和no来定义   参数:

int main(void) { /* ... */ }
     

或有两个参数(这里称为argc和argv,但可能有任何名称   使用,因为它们是声明它们的函数的本地函数):

int main(int argc, char *argv[]) { /* ... */ }
     

或等效的; 10)或其他一些实现定义的方式。

     
     

C11草案,2011年4月12日

其他所有内容都取决于您的编译器,因此不再是C-question。

答案 1 :(得分:4)

没有。 main()在标准C中返回int。此返回值的解释是周围运行时环境的问题。如果您确切知道自己在做什么,在某种特殊情况下,您知道环境将以某种方式解释该值,那么您可以将指针强制转换为int。但那太讨厌了。

请注意,在程序退出之后,指向动态分配的内存的指针(可能)毫无意义!返回指向固定地址的指针是有意义的,例如,某些嵌入式环境中的硬件寄存器。

答案 2 :(得分:3)

完成phresnel的回答,并回答它是否有用:因为每个进程都有自己的地址空间,即使你的main()返回一个你用作地址的整数值,也会是什么因为返回的指针只与刚刚退出的进程的地址空间一致...