| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 47342 人关注过本帖, 1 人收藏
标题:void main和int main(void)区别
只看楼主 加入收藏
DoNO1
Rank: 1
等 级:新手上路
帖 子:155
专家分:0
注 册:2008-3-27
收藏(1)
 问题点数:0 回复次数:20 
void main和int main(void)区别
各位大虾:
    首先声明一下,我在C方面很菜。我想问个问题,希望不吝赐教。
    我在一些书中看到这两种形式
一、
void main()
{


}
 
二、
int main(void)
{



return 0;
}
谁能给我解释一下这两种的区别(越详细越好!)谢谢了!
搜索更多相关主题的帖子: void main int 
2008-04-06 15:45
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
int main(void)  // 标准写法
{
return 0;
}

void main()  // 从来都没有这个标准
{            // 这个是一种误解


}

—>〉Sun〈<—
2008-04-06 15:52
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
收藏
得分:0 
据说标准的是
int main(int argc,char* argv)
{
    return 0;
}

不记得听哪个老师说的了
不过我自己从来没用过那些参数

[url][/url]
2008-04-06 15:53
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
[bo]以下是引用 [un]bjtusq[/un] 在 2008-4-6 15:53 的发言:[/bo]

据说标准的是
int main(int argc,char* argv)
{
    return 0;
}

不记得听哪个老师说的了
不过我自己从来没用过那些参数


用于命令行参数的

—>〉Sun〈<—
2008-04-06 15:58
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
int main(int argc,char* argv)//接受命令行参数;
void main();//非标准;

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-06 15:58
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
以前c是没有void类型的

You have lots more to work on! Never give up!c language!
2008-04-06 16:04
wangskyyi
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-4-6
收藏
得分:0 
借楼主的位置  我也是个新手
问下

return 0;  什么意思?  还有  #include<stdio.h>  指的是什么
2008-04-06 16:16
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
return 0在主函数相当于exit(0),进程终止

You have lots more to work on! Never give up!c language!
2008-04-06 16:17
wangskyyi
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-4-6
收藏
得分:0 
谢谢楼上的哈。。 还个呢#include<stdio.h>
2008-04-06 16:21
DreamHK
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-4-6
收藏
得分:0 
#include<stdio.h>是指将stdio.h这个头文件包含进来.

return 0;
表示正常返回,返回其他值也是对的...看需要而定.
大家可以看看这篇文章:http://hi.baidu.com/dream0xdl/blog/item/af378713a27fe7826538db4d.html

对于int main()和void main() 先不说哪个对或哪个不对,反正在一定条件下都是可以通过编绎的。以前用TC,我一直是写成void main()的,后来装了win-TC,C-free,TCC,VC++6.0 等,写的还是void main() ,最近用了Linux下的Gcc,感觉就出现了问题。。。
先看一个最简单的程序
#include"stdio.h"
void main()
{
printf("hello,world!\n");
}

没出现在问题吧,我以前就是这样写的,很多人也是。甚至写成main( )也会通过。。。
现在我用Linux下的gcc g++ cc分别编绎,结果:
[root@localhost home]# gcc a.c
a.c: In function `main':
a.c:3: warning: return type of 'main' is not `int'
[root@localhost home]# g++ a.c
a.c:3: error: `main' must return `int'
[root@localhost home]# cc a.c
a.c: In function `main':
a.c:3: warning: return type of 'main' is not `int'
出现问题了,出现了返回值不是int的错误。。。

解说:
Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main() { /* ... */ } is not and never has been C++, nor has it even been C.(意为 void main() 从来就不存在于 C++ 或者 C )。
所以void main( )本身就是错误的。。。

如果看过 The C programming Language 2e 这相书话,里面的例子写的都是main() ,这是C89标准中的,N年前的东西了。。。

C99标准中,定义的是int main(void),这里的void说明main()是不接收参数的,这是标准的,不要让他空着,main 函数的返回值类型必须是 int ,为什么有的会通过呢?这是编绎器给你自动加上去的,最后的return 0;也是,不要省略返回。VC6不会在目标文件中自动加入return 0; ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0;

因此并非所有的编绎器都支持void main (),标准中从来没有定义过void main (),虽然有些编绎器会支持,但请记住int并不是缺省返回值类型。。。C++中也是一样的道理。

最后说点,VC++6.0并不支持C99标准,gcc等支持了大部分,目前好像还没有哪一款编绎器完全支持C99标准的,Dev-C++一样也不是完全支持的.
原文链接(转载请保留此行):http://hi.baidu.com/dream0xdl/blog/item/d5dad7ce6358f80192457ea9.html
2008-04-06 16:50
快速回复:void main和int main(void)区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046061 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved