程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> main函數的正確格式,main函數正確格式

main函數的正確格式,main函數正確格式

編輯:關於C語言

main函數的正確格式,main函數正確格式


  main函數稱之為主函數,一個C程序總是從main()函數開始執行的。在關於C語言的網貼和圖書中,可以看到main函數的多種格式,這些格式,有的是正確的,有的是不正確的,為了避免錯誤,現歸納整理如下。

  一、main函數頭的格式:

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

  推薦指數:★★★★★

  有參數的格式,這是符合C89、C99標准的寫法。第一個參數argc(argument count)是命令行中的字符串個數。第二個參數argv(argument value)是一個指針數組,一般程序名賦值給argv[0],從argv[1]開始對各個參數依次賦值。

  如執行命令:dir /a /p  

  則:argc=3,argv[0]=dir,argv[1]=/a,argv[2]=/p

int main(int argc, char *argv[])
{
    
    return 0;
}

  2.int main(void)

  推薦指數:★★★★★

  無參數的格式,這是符合C89、C99標准的寫法。

int main(void)
{
    
    return 0;
}

  3.int main()

  推薦指數:★★★☆☆

  無參數的格式,相當於第2種寫法,C89標准中允許,常用的編譯器也支持這種寫法,但不符合最新的 C99 標准。

int main()
{
    
    return 0;
}

  4.main()

  推薦指數:★☆☆☆☆

  無參數的格式,相當於第3種寫法,C89標准中允許,但不符合最新的 C99 標准。第一版的C語言只有int一種類型,沒有char,long,float等,既然只有一種類型,那麼就可以不寫,後來的改進版為了兼容以前的代碼於是規定:不明確標明返回值的,默認返回值為int,也就是說 main()等同於int main()。在C99標准中,要求編譯器至少給 main() 這種用法來個警告。盡管這種寫法也能通過編譯,但強烈建議不要因為少敲幾個字母而去這麼寫。

main()
{
    
    return 0;
}

  5.void main()

  推薦指數:☆☆☆☆

  不推薦這種寫法。在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型為“void foo(void);”。可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把 main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標准中都是這樣規定的。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地表示:void main( ) 的定義從來就不存在於 C++ 或者 C 。雖然有的編譯器中,void main 可以通過編譯(如 vc6),但標准中從來沒有定義過 void main 。所以,如果你想你的程序擁有很好的可移植性,請一定要用int main。

void main()
{
    
    return 0;
}

   二、main函數返回值:

  main函數的返回值類型是int型的,而程序最後的 return 0正與之呼應,0就是main函數的返回值。那麼這個0返回到那裡呢?返回給操作系統,表示程序正常退出。

  如果main函數的最後沒有寫return語句的話,C99規定編譯器要自動在生成的目標文件中加入return 0,表示程序正常退出。注意,C-Free的MinGW5編譯器自動加入的是return 1,VC6不會在目標文件中加入return 0。盡管省略return語句後,C-Free和VC6等一些編譯器也能通過編譯,但仍建議最好加上return語句,養成良好的遵守標准的習慣。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved