来一段代码你们看看,不,两段吧!编程
int func() { printf(“hello world\n”); } int func(void) { printf(“hello world\n”);
}
请问这两段代码一不同呀?函数
不同.......spa
再仔细看看,嗯嗯,就是不同,由于一个有void ,另外一个没有嘛,还有什么本质区别没有,彷佛是没有了,可是,将这代码加上如下的主函数,其本质区别就显而易见了。操作系统
int main() { int a; func(a); }
乍一看,这代码确定是错的呀,编译器大神确定是不容许这样烂的代码经过编译的,可是,当为第一段代码时,居然能够经过了,这是为何呢?.net
你们都知道,C语言是一个风格随意,语法不是很严格一门语言,这方便了许多初学者能够很轻松的入门,可是,并不是随意就好,一旦养成了随意的习惯,就不难发现,不少问题就出如今本身的随意之上,上面的代码严格的来写,以下:code
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/45365393blog
我在这里就不赘述了,OK,关于main函数最后的return 0 ;我我的认为没有必要加,由于按照C语言的机制,若是在一个函数里面没有明确的return时,会自动返回,并且,C语言是以main函数开始,由main函数结束,因此其的返回值是返回给操做系统的,咱们不必要,可是在通常的函数中,仍是必需要的,由于返回的值是有用的,不然就返回值为空了.get