void main() 和 int main()

sxh53 2011-04-28 11:06:35
为什么我们学的是void main()的呢?我是北邮的,用的人民邮电出版社的书
不过看网络上的都用 int main()
int main()
里面好像还可以设参数
而且还要return 0;
这个0 是什么意思?
我知道int 型函数要return
return 0是什么???
迷茫..
...全文
271 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在 int main()中,return 0表示返回一个整形,
正常结束,而在一般函数体中 return 0 表示不正常的结束。

其实 return 0 的一层含义是主函数到此结束
要是按标准来的话, main 应该有返回值, 但是实际上很多时候这个返回值对我们来说没有意义,这才有了 void main()
yby4769250 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sxh53 的回复:]
引用 7 楼 pathuang68 的回复:

引用 4 楼 sxh53 的回复:

用int main()

要比 void main() 好么? 比如什么节省算法的。
我觉得int main()挺酷的 就是不会用
里面的参数是什么意思??

去翻翻最基本的书,上面都会有详细的说明。

楼主是不是学习非常好的那种人(考试成绩很好)?俺有一个清华计算机毕业的小弟,说他们班有……
[/Quote]
学校都是这么安排教学计划的啊,你学的数据结构应该也是C++语言版的,和你学习C++没有冲突啊,相反可以让你更深入的学习C++。学一个学期让你入门就行了(我们是开两个学期的C++课),入了门后就是自己学,大学的大多专业课都是这样的,老师是不会像高中那样,按照课本从头到尾完全教会你的,都是自学,自学是培养你的学习能力和自主能力
zhang46791 2011-04-29
  • 打赏
  • 举报
回复
俺就知道可以这样写,但具体的没去研究。参考各位的!!!嘿嘿
pywepe 2011-04-29
  • 打赏
  • 举报
回复
当你的程序运行于父进程创建的子进程时,这个int返回值意义重大
manmount 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zhao4zhong1 的回复:]

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
[/Quote]

这个路线图非常好。我给你简化一下:计算机概论->dos系统->汇编->C
shihaobin 2011-04-29
  • 打赏
  • 举报
回复
一般的都要求时int main(),这比较正式一点,有些软件如果写作void main()时,运行时显示错误
xunxun 2011-04-29
  • 打赏
  • 举报
回复
你如果做GUI编程,几乎没有差别。如果是通过命令解释器装载的(cmd or shell),返回值表示的是否是安全的退出程序,如果安全退出,寄存器会有一系列的恢复动作。(如果不恢复,不是一定会出现问题,只会说有潜在的问题)。
我印象中现在C99标准要求编译器会在目标代码中最后自动加入 return 0,所以符合C99标准的编译器不加亦可,但建议加入。
赵4老师 2011-04-29
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
meteorshmily 2011-04-29
  • 打赏
  • 举报
回复
int main(int argc, char** argv) 这种用法,只有在外部程序调用该程序时,才会使用argc,argv的变量。这些变量可能用来设置编程的一些参数及传递一些外部数据。
l523669057 2011-04-29
  • 打赏
  • 举报
回复
main()函数的返回值是用来告诉操作系统:你的程序的执行情况,是正常执行结束了,还是不正常执行结束。以向操作系统对你程序使用的资源如何处理提供参考
lihanbing 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yyg990441 的回复:]

1.根据C/C++标准,main函数只有2种标准的形式:
int main(void); 和 int main(int argc, char** argv);
至于教材的作者使用void main(),说明他没有看过C/C++标准中关于main函数的说明。显然任何牛逼的人在C/C++方面都没有标准牛逼,所以你的教材写错了(其实教材里面写错的东西应该很多吧,不信你去看看你教材里指针和数组是怎么……
[/Quote]
mian是C++标准库默认的程序入口点,这个入口点可以使任何名字,只要在link的时候指定即可
oldmtn 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yyg990441 的回复:]

1.根据C/C++标准,main函数只有2种标准的形式:
int main(void); 和 int main(int argc, char** argv);
至于教材的作者使用void main(),说明他没有看过C/C++标准中关于main函数的说明。显然任何牛逼的人在C/C++方面都没有标准牛逼,所以你的教材写错了(其实教材里面写错的东西应该很多吧,不信你去看看你教材里指针和数组是怎么……
[/Quote]
up~~~~~~~~~~~
ssbb94 2011-04-29
  • 打赏
  • 举报
回复
6楼的第一句是对的。但是c++标准只是规定了各种实现至少要保证的main函数形式,各种编译器可能有自己独特的main,但是标准中规定的两种形式在所有编译器都是确保正确的。
manmount 2011-04-29
  • 打赏
  • 举报
回复
void main(void) 是VC
ISO c 是 int main()
bpeldesigner 2011-04-29
  • 打赏
  • 举报
回复
建议用INT MAIN(),标准的,其实main函数里有三个参数,楼主可以去查阅一下,linux下用过地三个参数
sxh53 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pathuang68 的回复:]

引用 4 楼 sxh53 的回复:

用int main()

要比 void main() 好么? 比如什么节省算法的。
我觉得int main()挺酷的 就是不会用
里面的参数是什么意思??

去翻翻最基本的书,上面都会有详细的说明。

楼主是不是学习非常好的那种人(考试成绩很好)?俺有一个清华计算机毕业的小弟,说他们班有一个女生读书相当之NX,但在做毕设的时候,xp怎么……
[/Quote]

我成绩一般般...现在大一...对C++很感兴趣,想深入研究..但是貌似我们学校给开了这学期C++之后就不学了,转成数据结构...所以我就自己往深琢磨...
我的专业是通信
深钻c++有必要么....我现在都很困惑.
shun_qizi_ran 2011-04-28
  • 打赏
  • 举报
回复
现在用的最多的还是int main()的,建议用这个的
pathuang68 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sxh53 的回复:]

用int main()

要比 void main() 好么? 比如什么节省算法的。
我觉得int main()挺酷的 就是不会用
里面的参数是什么意思??
[/Quote]
去翻翻最基本的书,上面都会有详细的说明。

楼主是不是学习非常好的那种人(考试成绩很好)?俺有一个清华计算机毕业的小弟,说他们班有一个女生读书相当之NX,但在做毕设的时候,xp怎么关机都不知道...搞得他们都很愕然。

费玉清唱歌唱得很好,不过据说他连简谱都不识...

都是些神人...
yyg990441 2011-04-28
  • 打赏
  • 举报
回复
1.根据C/C++标准,main函数只有2种标准的形式:
int main(void); 和 int main(int argc, char** argv);
至于教材的作者使用void main(),说明他没有看过C/C++标准中关于main函数的说明。显然任何牛逼的人在C/C++方面都没有标准牛逼,所以你的教材写错了(其实教材里面写错的东西应该很多吧,不信你去看看你教材里指针和数组是怎么讲的?再看看C90/99标准里面是怎么讲的)

2.既然main函数要返回一个整数,你就可以随便返回一个整数,如-1,-2等等。一般认为程序正常结束,main函数返回0

3.给你个建议先不要死抠这些细节,先培养自己的编程能力。
pathuang68 2011-04-28
  • 打赏
  • 举报
回复
main函数有点特殊,你可以不再最后加return,尽管前面声明要求返回int。因为如果在不加return的情况下,编译器会缺省地为你加上return 0;

其他函数则必须返回和函数声明时要求返回的类型保持一致,否则不能通过编译。
加载更多回复(4)

64,665

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧