VC++6中关于main 和void 的问题

稀里糊涂过了很久才发现的一个区别:入口函数有些教程里使用的是intmain()而有些用的是voidmain()有什么区别呢?... 稀里糊涂过了很久才发现的一个区别:入口函数有些教程里使用的是int main()而有些用的是 void main()有什么区别呢? 展开
 我来答
匿名用户
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()
匿名用户
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不需要
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式