VC++6中关于main 和void 的问题
稀里糊涂过了很久才发现的一个区别:入口函数有些教程里使用的是intmain()而有些用的是voidmain()有什么区别呢?...
稀里糊涂过了很久才发现的一个区别:入口函数有些教程里使用的是int main()而有些用的是 void main()有什么区别呢?
展开
4个回答
2013-11-20
展开全部
其实真正完整的函数是:
int main( int argc, char *argv[ ], char *envp[ ] );
其中int表示程序的返回的结果,通常情况下0表示程序执行失败,
这个函数是当程序结束的时候才会返回的。非0表示程序执行成功。
argc表示命令行中参数的个数。一般的这个值都是要大于1的。
argv表示一个字符串数组,即命令行参数。一般argv[0]表示主程序
的的路径。
envp表示一个字符串数组,表示旦配程序执行的环境变量。例如path,
CPU类型之类的,都在这个参数中。
操作系统在建立一个进程的时候,首先要通过程序的模谨指入口点地址,
即main函数,而在C中,main函数的调用约定是cdecl,即采用被
调用的程序(这里指操作系统)对函数堆栈分配,函数从右只左,
最后的返回值存储在EAX寄存器中。
所以对于C来说
int main( int argc, char *argv[ ], char *envp[ ] );
int main();
void main();
所产生的汇编指令是一致的,参数的个数是有由操作系统的分配
和管理的,所以他的产生的结束都不归当前程序所管。
但是在某些时候,操作系统需要知道程序最后结束的时候返回什
么值,虽然这个值对于最终用户没有什么多大的作用,但是也许
在Debug程序中是有用的。你在VC2008的调试窗口最后的可以看
到一行字——xxx.exe已经退出,返回值xx。这个返回值就是在
main函晌耐数中return的值。
对于简单的C程序来说,或者是最终程序来说,这些信息无关紧
要,所以在某些时候,我们都只会把int改为void,这样就不用
在函数中写return语句了,因为在c语言中,如果一个函数有返
回值,就必须写return语句。
另外很多小程序,都不对命令行参数解析,而且通过库可以获
得其他的环境变量,所以,argc,argv,envp这些参数也省略了。
最后就获得了最简单的入口点函数——void main()
int main( int argc, char *argv[ ], char *envp[ ] );
其中int表示程序的返回的结果,通常情况下0表示程序执行失败,
这个函数是当程序结束的时候才会返回的。非0表示程序执行成功。
argc表示命令行中参数的个数。一般的这个值都是要大于1的。
argv表示一个字符串数组,即命令行参数。一般argv[0]表示主程序
的的路径。
envp表示一个字符串数组,表示旦配程序执行的环境变量。例如path,
CPU类型之类的,都在这个参数中。
操作系统在建立一个进程的时候,首先要通过程序的模谨指入口点地址,
即main函数,而在C中,main函数的调用约定是cdecl,即采用被
调用的程序(这里指操作系统)对函数堆栈分配,函数从右只左,
最后的返回值存储在EAX寄存器中。
所以对于C来说
int main( int argc, char *argv[ ], char *envp[ ] );
int main();
void main();
所产生的汇编指令是一致的,参数的个数是有由操作系统的分配
和管理的,所以他的产生的结束都不归当前程序所管。
但是在某些时候,操作系统需要知道程序最后结束的时候返回什
么值,虽然这个值对于最终用户没有什么多大的作用,但是也许
在Debug程序中是有用的。你在VC2008的调试窗口最后的可以看
到一行字——xxx.exe已经退出,返回值xx。这个返回值就是在
main函晌耐数中return的值。
对于简单的C程序来说,或者是最终程序来说,这些信息无关紧
要,所以在某些时候,我们都只会把int改为void,这样就不用
在函数中写return语句了,因为在c语言中,如果一个函数有返
回值,就必须写return语句。
另外很多小程序,都不对命令行参数解析,而且通过库可以获
得其他的环境变量,所以,argc,argv,envp这些参数也省略了。
最后就获得了最简单的入口点函数——void main()
2013-11-20
展开全部
如果你用int main()就需要return 0;这样返回一个数,0程序表示正确,非0错误void main()表示没有返回值不需要return 0;这样void的游渗用法和派销普通尘磨游函数里的返回类型一样理解
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-20
展开全部
int main是需要main函数返回一个整型值,在main函数里用return 0;结尾就可以;而void是不返回值。也就是不用给出上面那种结尾。其实每种函数都是有类型的梁前氏,如果不给悔姿出橡散类型,一般默认是VOID型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-20
展开全部
通俗的来讲就是一个需要返回值,一个不需要。int需要,void不需要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询