關於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

相關文章
相關標籤/搜索