关于C语言中的形参列表空着与加void的区别
来一段代码大家看看,不,两段吧!
int func()
{
printf(“hello world\n”);
}
int func(void)
{
printf(“hello world\n”);
}
请问这两段代码一不一样呀?
不一样.......
再仔细看看,嗯嗯,就是不一样,因为一个有void ,另一个没有嘛,还有什么本质区别没有,似乎是没有了,但是,将这代码加上以下的主函数,其本质区别就显而易见了。
int main()
{
int a;
func(a);
}
乍一看,这代码肯定是错的呀,编译器大神肯定是不允许这样烂的代码通过编译的,但是,当为第一段代码时,竟然可以通过了,这是为什么呢?
大家都知道,C语言是一个风格随意,语法不是很严格一门语言,这方便了许多初学者可以很轻松的入门,但是,并非随意就好,一旦养成了随意的习惯,就不难发现,很多问题就出现在自己的随意之上,上面的代码严格的来写,如下:
void func(void)
{
printf(“hello world\n”);
}
int main(int argc,char argv[])
{
func();
return 0;
}
是不是看起来很麻烦呀,因为很多的参数在我们日常的编程之中用不到,比如:func(void)中的void我们就没有必要要,因为空着其他人看着就知道这个函数在调用的时候不返回任何参数,也不需要任何参数,所以加void是多余的,但是,在计算机看来,空着!=void,函数不需要参数,并不代表就不可以传入参数,只不过传入的参数用不到而已,而void就明确表示不要任何参数,那你传入参数的话,就是错的,就比如你要给两个人送同样一个东西,这两个人都用不到这个东西,其中一个人说了,不要这东西,而另一个把你的东西收下了,直接扔入垃圾桶一样.而main函数里的int argc,int argv[]是啥东西,大家可以戳这里,http://blog.csdn.net/it_dream_er/article/details/45365393
我在这里就不赘述了,OK,关于main函数最后的return 0 ;我个人认为没有必要加,因为按照C语言的机制,如果在一个函数里面没有明确的return时,会自动返回,而且,C语言是以main函数开始,由main函数结束,所以其的返回值是返回给操作系统的,我们没必要要,但是在一般的函数中,还是必须要的,因为返回的值是有用的,否则就返回值为空了.