|
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: 冰的热度
*/ 时间: 2007-9-29 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
前些天在论坛看到一贴,讨论main()函数的返回值,
有的说必须有返回值,如:return 0;
有的说没有也可以,如:用void修饰main()
但大家的讨论都只留于表面,现在我来试着讲解一下深层含义!
以下观点纯属个人观点,若有不当之处,望高手们不吝赐教
要想真正理解这个问题,首先要了解一下操作系统的外壳
操作系统是由多个功能模块组成的庞大,复杂的软件系统,任何通用的操作系统,都要提供一个称为shell(外壳)的程序,用户(操作人员)使用这个程序来操作计算机系统进行工作.
DOS中有一个程序command.com,这个程序在DOS中称为命令解释器,也就是DOS系统的shell.
用户的命令由command执行,首先command把程序加入内存,然后设置CPU的CS:IP指向程序的第一条指令(也就是程序入口,在C++中就是main()函数),从而使程序得以运行.程序结束后,返回到command中,CPU继续运行command.注意在返回的时候要有一个返回值,这样才能安全退出程序(注意我用的是退出一词),之后各寄存器会有恢复动作,如果没有返回值,虽然表面上看程序也正常结束了,但实际上它并没有退出,各寄存器并没有恢复,如CS:IP 还是指向程序尾部,如果得到CS:IP,那么可以让程序继续执行下去,但是所执行的程序已经不是你的 |
|