为什么我学的c语言在定义main函数时,前面没有int

2024年11月19日 02:35
有2个网友回答
网友(1):

楼上说法有些错误。首先,mian函数作为主函数是程序的入口没错,但是它其实一定要被其他函数调用的,这些函数就是进入程序之前的引导。所以,有的时候,我们会发int返回值的main函数内不甚至用了参数,这些参数也是可以缺省的,但实际上都被默认值了,引导程序在调用main函数的时候必须获取这些值,否则是不可以动作的。
在VC6.0编译环境中,main的默认返回类型是int,所以可以省略void不写,形成楼主那样。同理老式c编译器中默认main是void型,也可以省略int不写,形成楼主看到的那样。
但是实际上,void也好,int也好,只要不出现错误,都是默认要返回给系统程序一个值,以便让系统知道这个程序的执行情况的。系统会随时检测这个程序,实质上就是main函数是否处于一个正常的状态。
这才是main的实质。
从以上可以看出,main的返回类型可以不写,不同编译器对它的解释是不一样的,有的是int型,有的void型。所以干脆直接不写,在实际编译环境中实际定义。

网友(2):

一个函数有返回值通常是因为该值要被其他函数使用,而main函数作为主函数,基本不存在这种情况。所以,main函数也可以用无返回值的定义,下面对main函数的定义都是对的:

int main(void); // same as above
int main(int argc,char** argv);
void main();
void main(int argc, char** argv);

初学C时,通常看到的是第三种方式,并且void也取消了,因为这是缺省的定义。