1

如标题所示,主函数是否有可能返回一个指针?如果是,那么在哪里有用?谢谢!

4

3 回答 3

7

只有返回类型 ofint受到标准的祝福:

5.1.2.2.1 程序启动

1 程序启动时调用的函数名为main。实现没有声明这个函数的原型。它应定义为返回类型为 int 且不带参数:

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

或者带有两个参数(这里称为 argc 和 argv,尽管可以使用任何名称,因为它们是声明它们的函数的局部变量):

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

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


C11 草案,2011 年 4 月 12 日

其他一切都取决于您的编译器,因此不再是 C 问题。

于 2012-06-11T12:19:19.717 回答
4

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

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

于 2012-06-11T12:19:10.430 回答
3

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

于 2012-06-11T12:30:51.247 回答