2013-09-21 63 views
10

我是C語言的初學者。任何人都可以用例子詳細解釋main(),int main(),void main(),main(void),void main(void),int main(void)如何在C語言中工作?就像我們在使用void main()時發生的情況一樣,當我在簡單的語言中使用int main()時會發生什麼,等等。
我知道,但無法理解它做什麼:int main()和void main()如何工作

  1. 的main() - 函數沒有參數
  2. INT主要() - 函數返回int值
  3. 無效的主要() - 函數返回任何內容等

當我使用int main()返回0編寫簡單的hello world時,仍然給出了和使用void main()時相同的輸出,所以它是如何工作的?它的應用是什麼?

+5

'無效的主要()'主要是爲您所使用的人誰不知道C語言寫的很好的教科書指示有用。在你列出的表格中,只有'int main(void)'是有效的。 (它不是那麼簡單,但現在已經足夠接近了。) –

回答

19

main()void main()都不是標準C.前者是允許的,因爲它有一個隱含的int返回值,使其與int main()相同。 main返回值的作用是將exit status返回給操作系統。

在標準C,爲main唯一有效的簽名是:

int main(void) 

int main(int argc, char **argv) 

您正在使用的格式:int main()是一個古老的樣式聲明,表示main需要一個未指定參數數量。不要使用它 - 從上面選擇一個。

+1

在簡歷中,它們只是允許向後兼容舊C代碼,因爲操作系統不需要退出狀態。您總是應該在'main'中返回一個整數值。 – Jack

+2

@Jack:'void main()'不是爲了向後兼容任何東西。首先引入'void'關鍵字的相同標準將'main'的返回類型定義爲'int'。 –

+0

int main(int argc,const char ** argv,const char ** env) – dns

0

int main返回integer

void main回報nothing

8

如果你真的想了解ANSI C 89,我需要糾正你一兩件事; 在ANSI C 89以下的功能之間的差異:

int main() 
int main(void) 
int main(int argc, char* argv[]) 

是:

int main()

  • 一個期望未知數目的未知類型的參數的函數。返回表示應用程序軟件狀態的整數。

int main(void)

  • 一個期望參數的函數。返回表示應用程序軟件狀態的整數。

int main(int argc, char * argv[])

  • 一個期望的參數和argv []參數的argc數的函數。返回表示應用程序軟件狀態的整數。

使用每個功能

INT主要(無效)

  • 你需要的時候你的程序不需要初始參數運行使用此功能/負載時,關於(從OS接收到的參數 - 不在程序中)。

INT主(INT ARGC,CHAR *的argv [])

  • 你需要的時候你的程序需要初始參數加載使用此功能(從OS接收的參數 - 出它自己的程序)。

關於void main()

在ANSI C 89,使用時void main和編譯該項目作爲-ansi -pedantic(在Ubuntu,EG) 您將收到一個警告,表明你的主要功能是void類型,而不是鍵入int,但您將能夠運行該項目。 大多數C開發人員傾向於在其所有變體上使用int main(),但void main()也將進行編譯。

希望有幫助!

好運和快樂編碼

相關問題