一個(gè)c語言程序的執(zhí)行,從main函數(shù)中的指令開始執(zhí)行。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、花山網(wǎng)絡(luò)推廣、成都小程序開發(fā)、花山網(wǎng)絡(luò)營銷、花山企業(yè)策劃、花山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供花山建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
一個(gè)程序,無論復(fù)雜或簡單,總體上都是一個(gè)“函數(shù)”;這個(gè)函數(shù)就稱為“main()
函數(shù)”,也就是“主函數(shù)”。比如有個(gè)“做菜”程序,那么“
做菜
”這個(gè)過程就是“主函數(shù)”。在主函數(shù)中,根據(jù)情況,你可能還需要調(diào)用“買菜,切菜,炒菜”等子函數(shù)。
main函數(shù)在程序中大多數(shù)是必須存在的,但是依然有例外情況,比如windows編程中可以編寫一個(gè)動(dòng)態(tài)鏈接庫(dll)模塊,這是其他windows程序可以使用的代碼。由于dll模塊不是獨(dú)立的程序,因此不需要main函數(shù)。再比如,用于專業(yè)環(huán)境的程序-----如機(jī)器人中的控制芯片--可能不需要main函數(shù)。
一般來說,C語言都是從main函數(shù)開始運(yùn)行的,這個(gè)main函數(shù)可以認(rèn)為是C語言程序的執(zhí)行起點(diǎn)。
更準(zhǔn)確的說法,應(yīng)該是C語言從入口函數(shù)開始執(zhí)行。
因?yàn)?,雖然大多數(shù)編譯器都是以main為起始執(zhí)行函數(shù),也就是入口函數(shù),但還是有例外的,比如:
1、對(duì)于支持UNICODE WIN32 應(yīng)用程序,其程序入口為tmain;
2、對(duì)于windows 窗體程序,其程序入口為WinMain;
3、gcc中,傳統(tǒng)有兩個(gè)編譯選項(xiàng)可以指定入口函數(shù)名,即:
gcc -e entryfunc
gcc --Entry=entryfunc
對(duì)于當(dāng)前新版gcc, 僅支持-e。 比如編譯時(shí)用命令:
gcc -e my_main a.c -o a.out
就會(huì)把my_main作為入口函數(shù)調(diào)用。
一個(gè)c語言程序總是從main函數(shù)開始執(zhí)行。在一個(gè)C語言源程序中,無論main函數(shù)書寫在程序的前部,還是后部,程序的執(zhí)行總是從main函數(shù)開始,并且在main函數(shù)中結(jié)束。
一個(gè)c程序有且僅有一個(gè)main函數(shù),除main函數(shù)之外可以有若干個(gè)其它的函數(shù),每個(gè)函數(shù)實(shí)現(xiàn)某一特定的操作。
main函數(shù),又稱主函數(shù),是程序執(zhí)行的起點(diǎn),main是相對(duì)來說的,如同音學(xué)理論之主調(diào)于泛音,泛音即程序中的除main之外的其他函數(shù),迎合人們的思考方式而生成的而非必定的模式。有主有次,執(zhí)行起來?xiàng)l清縷析,既可將程序模塊化又實(shí)現(xiàn)了一個(gè)閉合的整體。
在執(zhí)行程序時(shí),由系統(tǒng)調(diào)用main函數(shù) 。main 函數(shù)是在程序啟動(dòng)中完成對(duì)具有靜態(tài)存儲(chǔ)期的非局部對(duì)象的初始化之后被調(diào)用的。它是程序在有宿主 (hosted)環(huán)境(亦即有操作系統(tǒng))中所指定的入口點(diǎn)。自立程序(啟動(dòng)加載器,操作系統(tǒng)內(nèi)核,等等)的入口點(diǎn)則是由實(shí)現(xiàn)定義的。
主函數(shù)的兩個(gè)形參形式中的形參,允許從執(zhí)行環(huán)境中傳遞任意的多字節(jié)字符串(它們通常被稱為命令行參數(shù)),各個(gè)指針 argv[1] .. argv[argc-1] 指向每個(gè)這些字符串的第一個(gè)字符。
argv[0] 是指向一個(gè)表示用于執(zhí)行該程序自身的名字的空結(jié)尾多字節(jié)字符串(或者當(dāng)執(zhí)行環(huán)境不支持時(shí),為空字符串 “”)的開頭字符的指針。這些字符串是可以改動(dòng)的,雖然對(duì)它們的改動(dòng)并不會(huì)被傳回給執(zhí)行環(huán)境:比如可以用 std::strtok 來使用它們。
由 argv 所指向的數(shù)組的大小至少為 argc+1,其最后一個(gè)元素 argv[argc] 保證為一個(gè)空指針。
c語言的函數(shù)體用{函數(shù)體開始,用}函數(shù)結(jié)束,函數(shù)體的的前面是定義部分,后面是執(zhí)行部分。
使用示例:
if (argc3) {
printf (" Error! Not enough arguments. Correct usage is ..\n" ) ;
printf("c:eopyfile? source_file? destination_file\n") ;
exit (1) ;
}
else {
open_files () ;
while (! feof(infile)) {
read_data ( ) ;
write_data() ;
}
close files() ;
}
擴(kuò)展資料
C語言中的大括號(hào),定義和初始化結(jié)構(gòu)體變量
結(jié)構(gòu)體變量的定義方法的樣例如下:
typedef struct
{
……
}T_Struct;
該結(jié)構(gòu)體變量的初始化樣例如下:
T_Struct tStruct = {0};