第1个回答 2007-12-03
首先你要知道,main函数对系统来说也只是一个普通的函数,它与你程序中的其它函数的不同的地方仅仅是它作为整个程序的起始点。
之后问题就好解决了,和所有函数一样,它也有返回值(类型),函数名,参数。
这是一个普通函数
int fun(int a)
{
......
}
这是一个标准main函数
int main(int argc, char *argv[])
{
......
}
然后来看一下void,和int char float一样,它也是一种类型,不过特殊的地方是它代表无类型.或应该是暂不确定类型。
用在做函数参数和返回类型的时候,它通常表示为“无”的意思void fun(void)即代表这个函数没有返回值,没有输入参数.
(ps:void* fun(void *p) 等等你暂时不用管)
最后,总结一下
void main()其实应该是void main(void),代表这个程序没有返回值,没有输入参数(或不调用输入参数).
main() (这种用法其实更不标准,没有注明返回类型,不过系统默认这种函数的返回类型为int型)
其实就是int main(void),代表这个程序没有输入参数,而有为int型的返回值。
(在这个函数的结尾通常应该有return 0;或exit(0);语句)
----------------------------你可以只看这里-----------------
结论:
什么时候该用,什么时候不该用?
回答一:目前阶段,无所谓,你心血来潮了就用,不爽就不用。
回答二:当你这个程序(准确说应该是你期望的进程)运行结束后需要向父进程传递信息的时候就应该用int main(void),否则使用void main(void)
为什么用与不用都能执行程序?????????
因为它也只是一个普通的函数而已。
如同
void fun(void)
{
printf("yeah!");
}
和
int fun(void)
{
printf("yeah!");
return 0;
}
都可以运行是相同的道理。
第2个回答 推荐于2016-10-26
晕哦,一个main和一个void main就发了两百的悬赏分。以后的问题多了去了,你怎么弄哦。
顺便跟你说一下吧:
void main 它有void main(void)或void main(int ,char **)两种类型,其中第一种是无参类型,第二种是有参类型。我曾看到一本书上说main函数中还有一种三个参数的类型,可我在其他的外国文档中找不到相关的资料。所以就不跟你说了。
int main 这个类型也分为两种,也是和上面一样。我就不多说了。
void main()是c语言中的,而int main()是C++中的。
int main()必须有返回值并且必须要是整数。默认为0。
如果C++中不写返回值,即不写return 0;那么系统在编译的时候就会自动添加return 0;如果在C++中不写int main()而写main()则在编译的时候,系统自动给你添加 int,如果C++在编译的时候写了 void main(),严格意义上说是错误的写法。
至于C语言,没有这种要求。但必须保持收尾一致。
如你写了void main()就不要写return 0;
如果你写了int main()就要写return 0;
不知道我这样说你颗明白。
如果你需要,我可以向你提供官方文档!!!本回答被提问者采纳
第3个回答 2007-12-04
main等于是int main,这是C的规定,返回类型默认是整型,所以定义函数时,省略返回类型,等于是返回整型.
你不明白有可能是不清楚函数的返回类型的作用.
函数的返回类型.实际上就是函数在执行完毕后,传给调用他的程序的东西...
程序在执行时,如果要调用函数,那么,程序就停下来了,就会执行函数内的代码,函数内的代码运行完成后,可能会返回一个东西给调用他的程序..比如,如果一个函数是判断两整数的大小的,那么,他就可能会返回一个判断的结果.有的函数也不需要返回任何的结果,比如,把一个数组进行排序.排序完成后,他的工作就完成了.这样的函数,就不需要返回任何东西..(有的语言里把无返回值叫做过程,有返回值的才叫函数).不需要返回的,在C里面就说他返回的是空.也就是什么都不返回啦.像刚才说的判断整数大小,如果函数只是判断前者是否比后者大,那么,这样的函数一般就返回布尔类型.如果是像"找出最大的一个数"这样的函数,一般就返回整型..
对于main函数来讲,他是程序的入口,但他也是一个函数,他在完成工作后,也可以返回一个东西(一般来说,这个东西是返回给系统的,就我所知,一般情况下没什么意义),当然也可以不返回.所以,你可以返回一个int,也可以不返回,也就是定义void.
如果你直接写一个main,在程序里又没有return 一个值的话.那么一般来说,编译会产生一个警告(有的是错误),说你的函数没有返回值.这时可以在程序最后加上一句return 0;或是把返回类型修改为void就可以了.
这两者具体的差别就在这里.没有void的时候,一般来说应该加上一个return 0;这样的语句,让程序有返回值.至于这个值的具体作用,我到现在为止还不清楚.