首頁  >  文章  >  後端開發  >  c程式的執行是從什麼開始到什麼結束?

c程式的執行是從什麼開始到什麼結束?

青灯夜游
青灯夜游原創
2020-08-31 16:45:0923485瀏覽

c程式的執行是從什麼開始到什麼結束?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn