关于C语言中的形参列表空着与加void的区别

关于C语言中的形参列表空着与加void的区别

来一段代码你们看看,不,两段吧!编程

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

相关文章
相关标签/搜索