随着标题的进行,main函数是否可以返回指针?如果是,那么哪里有用?谢谢!
答案 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()
返回一个你用作地址的整数值,也会是什么因为返回的指针只与刚刚退出的进程的地址空间一致...