在c語言中有且唯一的函數(shù)是:“main”函數(shù)?!癿ain”函數(shù),又稱主函數(shù),是程序執(zhí)行的起點;如果有其他函數(shù),則會完成對其他函數(shù)的調(diào)用后再返回到主函數(shù),最后由“main”函數(shù)結(jié)束整個程序。
c語言有且唯一的函數(shù)是:main函數(shù)
main函數(shù),又稱主函數(shù),是程序執(zhí)行的起點
程序執(zhí)行總是從main函數(shù)開始,如果有有其他函數(shù),則完成對其他函數(shù)的調(diào)用后再返回到主函數(shù),最后由main函數(shù)結(jié)束整個程序。在執(zhí)行程序時,由系統(tǒng)調(diào)用main函數(shù) 。
main 函數(shù)是在程序啟動中完成對具有靜態(tài)存儲期的非局部對象的初始化之后被調(diào)用的。它是程序在有宿主 (hosted)環(huán)境(亦即有操作系統(tǒng))中所指定的入口點。自立程序(啟動加載器,操作系統(tǒng)內(nèi)核,等等)的入口點則是由實現(xiàn)定義的。
主函數(shù)的兩個形參形式中的形參,允許從執(zhí)行環(huán)境中傳遞任意的多字節(jié)字符串(它們通常被稱為命令行參數(shù)),各個指針 argv[1] .. argv[argc-1] 指向每個這些字符串的第一個字符。argv[0] 是指向一個表示用于執(zhí)行該程序自身的名字的空結(jié)尾多字節(jié)字符串(或者當執(zhí)行環(huán)境不支持時,為空字符串 "")的開頭字符的指針。
這些字符串是可以改動的,雖然對它們的改動并不會被傳回給執(zhí)行環(huán)境:比如可以用 std::strtok 來使用它們。由 argv 所指向的數(shù)組的大小至少為 argc+1,其最后一個元素 argv[argc] 保證為一個空指針。
在最新的 C99 標準中,只有以下兩種定義方式是正確的:
int main( void ) /* 無參數(shù)形式 */ { ... return 0; }
int main( int argc, char *argv[] ) /* 帶參數(shù)形式 */ { ... return 0; }
int指明了main()函數(shù)的返回類型,函數(shù)名后面的圓括號一般包含傳遞給函數(shù)的信息。void表示沒有給函數(shù)傳遞參數(shù)。關(guān)于帶參數(shù)的形式,我們等會討論。
瀏覽老版本的C代碼,將會發(fā)現(xiàn)程序常常以。
main()
這種形式開始。C90標準允許這種形式,但是C99標準不允許。因此即使你當前的編譯器允許,也不要這么寫。
你還可能看到過另一種形式。
void main()
有些編譯器允許這種形式,但是還沒有任何標準考慮接受它。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地表示:void main( ) 的定義從來就不存在于 C++ 或者 C 。所以,編譯器不必接受這種形式,并且很多編譯器也不允許這么寫。
堅持使用標準的意義在于:當你把程序從一個編譯器移到另一個編譯器時,照樣能正常運行。
推薦教程:《C語言》