在C中,函数始终将其值返回给调用函数,而不是自身(如果返回类型不为空)。像,
int main()
但由于“主要”功能是由操作系统调用,因此不是功能。那么,'main'函数是谁返回它的值?当使用表达式
返回值时,值在哪里return(0);
在节目结束时?
答案 0 :(得分:4)
如前所述,这是特定于操作系统的。在UNIX系统中,它看起来像这样:
使用gcc编译程序时,它会围绕main()
函数包装启动例程。此例程调用main()
函数并保存其返回值。然后它调用exit()
函数(您的程序也可以调用它),它会执行一些常规清理。然后,此函数再次调用_exit()
,这是一个系统调用,告诉操作系统将main()
函数的返回值保存在进程表中(保存有关进程的元信息)。只要另一个进程在您的进程ID(PID)上调用wait()
,您的返回值就会被提供给调用进程,并且您的进程将从表中删除。
请查看此资源以获取更多信息:http://www.johnloomis.org/ece537/notes/Processes/process_environment.html
答案 1 :(得分:3)
这完全是特定于操作系统的,但通常操作系统通过
调用程序main
并将返回值存储在操作系统内部。我在(3)中引用的函数通常是一个很好的老式C函数,它只是跳转到main
,因此它可以从main
捕获返回值,就好像它是一个普通的C函数(事实上它是)。之后,它将该值存储在OS-land中的某个位置,以便需要读取返回值的进程可以这样做。
希望这有帮助!
答案 2 :(得分:1)
' main'的返回值在哪里?功能去?
它将返回到调用进程。
在POSIX兼容系统上,如果调用父进程是C程序,它至少可以通过在子进程后调用wait()
或waitpid()
来检索其子进程的最低8位结束。
答案 3 :(得分:0)
大多数操作系统都像这样调用main:
exit(main(argc, argv, envp));