編程筆記:int main和 int main(void)的區別?

2020-12-20 騰訊網

考慮 main()的以下兩個定義:

int main()

{

/* */

return 0;

}

int main(void)

{

/* */

return 0;

}

有什麼不同?

在C ++中,沒有區別,兩者相同。

兩種定義都可以在C中使用,但是從技術上講,使用void的第二種定義在技術上被認為是更好的,因為它明確指出main只能在沒有任何參數的情況下調用。

在C語言中,如果函數籤名未指定任何參數,則意味著可以使用任何數量的參數或不使用任何參數來調用該函數。例如,嘗試編譯並運行以下兩個C程序(請記住將文件另存為.c)。注意fun()的兩個籤名之間的區別。

以上程序編譯和運行正常,但下面的程序在編譯失敗

與C不同,在C ++中,上述兩個程序均無法編譯。在C ++中,fun()和fun(void)都是相同的。

因此區別在於,在C語言中,可以使用任意數量的參數來調用int main(),但是只能在不使用任何參數的情況下調用int main(void)。儘管大多數情況下並沒有什麼區別,但是在C語言中建議使用「 int main(void)」。

練習:(預測以下C程序的輸出)

問題

問題

小夥伴們看懂了嘛?希望對你們有幫助哦!

相關焦點

  • C/C++編程筆記:「 int main()」和「 int main(void)」的區別?
    return  0;}和int  main(void){   /*  */   return  0;}有什麼不同?在C ++中,沒有區別,兩者相同。兩種定義都可以在C中使用,但是從技術上講,使用void的第二種定義在技術上被認為是更好的,因為它明確指出main只能在沒有任何參數的情況下調用。在C語言中,如果函數籤名未指定任何參數,則意味著可以使用任何數量的參數或不使用任何參數來調用該函數。例如,嘗試編譯並運行以下兩個C程序(請記住將文件另存為.c)。
  • 「C語言」int main還是void main?
    ```void main```而必須使用```int main```。剛好最近有非計算機相關專業學C的同學問我```int main```、```main```和```void``` ```main```有什麼區別,便覺得是時候好好整理一番了,於是有了此文。
  • C語言的main函數到底該怎麼寫
    第二種,返回值為void,沒有入參:void main()這種形式的來源不得而知。但是為何這麼多初學者使用?main函數的返回值最終會作為程序的退出狀態,而一旦聲明為void,在程序退出後,想要獲取其退出狀態也就不可以了。因此不建議其返回值為void。
  • 深度剖析C語言的main函數
    可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標準中都是這樣規定的。雖然在一些編譯器中,void main() 可以通過編譯,但並非所有編譯器都支持 void main() ,因為標準中從來沒有定義過 void main 。
  • 如果 main 函數的末尾沒有 return 語句將會有什麼影響
    問題的本質回答這個問題其實只要理解一個東西就行了:那就是帶有返回值的函數請務必提供返回值,這個是基本約定也是編程習慣,如果大家都遵守,你不遵守,各種奇葩和頭疼的後果就遲早會來,不管是 main 也好,其他函數也好。所以,準大一這個時候一定要從現在開始養成習慣,遵守語言的基本約定。main 的標準聲明main 的標準聲明是什麼?
  • main( )函數詳解
    一、main()函數的形式在最新的 C99 標準中,只有以下兩種定義方式是正確的:int main( void )  /* 無參數形式 */{    ...    return 0;}int main( int argc, char *argv[] ) /* 帶參數形式 */{    ...    return 0;}int指明了main()函數的返回類型,函數名後面的圓括號一般包含傳遞給函數的信息。void表示沒有給函數傳遞參數。
  • 漫話:為什麼Java中的main方法必須是public static void的?
    首先都是public的、都是static的,返回值都是void,方法名都是main,入參都是一個字符串數組。當然,main方法還可以寫成以下形式,不過其實沒啥區別:public static void main(String... args) {}那麼,不知道大家有沒有想過,為什麼main方法必須得是public static void類型的,他的參數又必須得是一個字符串數組呢?
  • public static void main(String[] args)方法詳解
    ,比如方法的名字必須是main,方法必須是publicstatic void 類型的,方法必須接收一個字符串數組的參數等等。二、再說main()方法這個main()方法的聲明為:publicstatic void main(String[] args)。這個方法必須這樣定義,這是Java的規範。為什麼要這麼定義,和JVM的運行有關係。當一個類中有main()方法,執行命令「java 類名」則會啟動JVM執行該類中的main()方法。
  • 10個經典的 Java main 方法面試題
    點擊上方「Java編程精選」,選擇「置頂公眾號」關鍵時刻,第一時間送達!
  • 深度剖析C語言的main函數
    這可能是因為 在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型為「void foo(void);」。可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標準中都是這樣規定的。
  • 乾貨 | 深度剖析C語言的main函數
    這可能是因為 在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型為「void foo(void);」。可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標準中都是這樣規定的。
  • 你有沒有想過,C語言 main 函數到底為啥這麼寫?
    2、void main()初學者經常會使用的形式,但是並不知道來源在哪,在C89/C99/C11等文檔中都沒有提到這種形式的痕跡。這種寫法的返回值是void,沒有參數。值得注意的是,一旦聲明是void,在程序退出後,想要獲取其退出狀態也就不可以了。所以還是不建議返回值為void的。
  • C語言 main 函數到底怎麼寫是對的?
    各位,C語言中的main函數大家都再熟悉不過了,這是你學習C語言首先就要學習的東西,但是我看過很多人寫的代碼包括我們的一些讀者在main函數的寫法方面版本很多
  • void*到底是怎樣的存在?
    】 分享Linux/C/C++/數據結構與算法/工具等原創技術文章和學習資源。//來源:公眾號【編程珠璣】//main.c#include <stdio.h>int main(void){    int a[] = {0x01020304,2019};    int *b = a;    char *c = (char*)&a[0];    printf("b+1:%d\n",*(b
  • 深度剖析C語言的main函數!
    這可能是因為 在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型為「void foo(void);」。可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標準中都是這樣規定的。
  • 為什麼 main 方法是 public static void ?
    ,你是否曾經想過為什麼main方法是public、static、void的。當然,很多人首先學的是C和C++,但是在Java中main方法與前者有些細微的不同,它不會返回任何值,為什麼main方式是public、static、void,這篇文章嘗試去找到一些答案。
  • main函數有幾種寫法,哪種才是正確的呢?
    main函數,又稱主函數,是程序執行的起點,我們平時寫的main函數是什麼樣呢?1,是這樣?main(){}2,還是這樣?void main(){}3,還是這樣?int main(void){}4,還是這樣?int main(){}5,還是這樣?
  • 如何寫好 C main 函數 | Linux 中國
    main.c 文件的剖析當我從頭開始編寫 main.c 時,它的結構通常如下:int main(int argc, char *argv[]) {下面我將討論這些編號的各個部分,除了編號為 0 的那部分。如果你必須把版權或許可文本放在原始碼中,那就放在那裡。另一件我不想討論的事情是注釋。
  • main函數中argc和argv參數
    帶形參的main函數如main(int argc,char*argv[])是UNIX、Linux以及Mac OS作業系統中C/C++的main函數的標準寫法並且是血統最純正的main函數的寫法。一、argc和argv的具體含義argc和argv中的arg指的是argument(參數)。argc是argument count的縮寫,argv是argument vector的縮寫。
  • c語言main函數裡的參數argv和argc解析
    :argc和argv,那麼這兩個參數是表示什麼意思,怎麼用呢?(1)用shell腳本執行程序可以獲取程序的返回值並且列印出來:  #include <stdio.h>  int main(void)  {                       return 0;  }  #!/bin/sh ./a.out echo $?