C程式的入口是main函數,一般來說只要是正常運行結束的都是從main函數的第一句話開始,最後一句結束。
例如:
int main()//程序开始 { printf("Hello!\n"); return 0;//程序结束,返回值 }
但如果程式執行到中間遇到 return(main函數裡的) exit(不管是main函數還是子函數中) 等也是會結束程式的。
C語言main函數的寫法
#main函數是C程式的入口函數,即程式的執行是從main函數開始,對其他函數的調動也是直接或間接地在main函數中被呼叫。那麼main函數又是被誰呼叫呢?答案是作業系統。 C語言發展至今,對main函數有多種不同的寫法,以下就來探究一下各種不同的寫法#。註:測試環境為Ubuntu 17.10,GCC版本為7.2.0。
NO.1
main(){}
範例:
#include ade979de5fc0e1ca0540f360a64c230b main(){ printf("Hello World\n"); }
NO.2
void main(){}
範例:
#include ade979de5fc0e1ca0540f360a64c230b void main(){ printf("Hello World\n"); }
##NO.3
int main(){}範例:
#include ade979de5fc0e1ca0540f360a64c230b int main(){ printf("Hello World\n"); return 0; }
NO.4
int main(void){}範例:
#include ade979de5fc0e1ca0540f360a64c230b int main(void){ printf("Hello World\n"); return 0; }
NO.5
int main(int argc,char *argv[]){}#範例:
#
#include ade979de5fc0e1ca0540f360a64c230b int main(int argc,char *argv[]){ printf("Hello World\n"); return 0; }
# #NO.6
int main(int argc,char **argv){}範例:
#include ade979de5fc0e1ca0540f360a64c230b int main(int argc,char **argv){ printf("Hello World\n"); return 0; }############從上面的測試來看,寫法1在C90標準下可以正常編譯,而在C99和C11標準下會拋出一個警告(不寫回傳值,預設的回傳值為int,也就相當於寫法1和寫法3等價)。寫法2-6在C90、C99、C11標準下均能正常編譯。在這麼多寫法中,到底哪一些才是main函數的標準寫法?於是查閱了C標準文件對main函數的規格寫法,見下圖:################## 從標準文件中可以看出,寫法4、5、6才是main函數的規範寫法。寫法5與寫法6是等價的。那為什麼又會有寫法1、2、3呢?那是因為從1972年C語言被設計出來到C90標準發布這段時間,對C語言不同的實作就導致了對main函數的差異性。強烈不推薦寫法2,因為main函數是被作業系統呼叫的,作業系統會根據main函數的回傳值來判斷程式的正確執行與否,如果回傳void,那代表的是什麼狀態呢?而且有些編譯器支持這種寫法,有些編譯器不支持,所有的標準並未認可這種寫法。對於寫法1和寫法3還勉強能夠接受,不過也不建議這樣寫,最好還是按照標準寫法來寫。為什麼要按照標準寫法來寫?那是因為為了讓C程式有更好的移植性。寫法5與寫法6是等價的,第一個參數代表main函數參數的個數,第二個參數用指標分別指向這些參數。 argv[0]代表程式名,argv[1]到argv[argc-1]代表程式參數。下面再看看main函數的回傳值問題,請見下圖###############
從圖中可以看出,如果main函數的回傳值是int型別的相容型別,從main函數傳回後的值與exit一起相當於執行了exit xxx。 xxx代表從main函數傳回後的值。如果忘記寫了return語句,當執行到main函數體的右大括號},會傳回預設值0。返回0代表程式執行成功,程式退出。如果main函數的傳回類型不是int類型的相容類型,程式傳回給作業系統的狀態將會不明確。
C標準文件下載位址:
傳送門:http://download.csdn.net/download/u012219371/10184521
#C標準簡介:
傳送門:http://blog.csdn.net/u012219371/article/details/78951972
相關推薦:c語言教學影片
#以上是c程式的執行是從什麼開始到什麼結束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!