




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系1第第8 8章章 編譯預(yù)處理及帶參數(shù)的編譯預(yù)處理及帶參數(shù)的mainmain函數(shù)函數(shù)8.18.1宏定義宏定義8.28.2文件包含文件包含8.38.3條件編譯條件編譯8.4 main8.4 main函數(shù)的參數(shù)函數(shù)的參數(shù)遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系28.18.1宏定義宏定義 宏定義是指用一個標(biāo)識符來表示一個字符串,標(biāo)識符宏定義是指用一個標(biāo)識符來表示一個字符串,標(biāo)識符稱為宏名。在編譯預(yù)處理時,把程序文件中在該宏定義之稱為宏名。在編譯預(yù)處理時,把程序文件中在該宏定義之后出現(xiàn)的所有宏名,都用宏定義中的字符串去代換,這個后出現(xiàn)的所有宏名,都用宏定義中的字符串去代換,這個過
2、程稱為宏替換。過程稱為宏替換。 在語言中,宏分為有參數(shù)和無參數(shù)兩種。在語言中,宏分為有參數(shù)和無參數(shù)兩種。8.1.18.1.1無參宏定義無參宏定義 所謂無參宏就是宏名后不帶任何參數(shù)。其定義的一般所謂無參宏就是宏名后不帶任何參數(shù)。其定義的一般形式為:形式為: #define #define 標(biāo)識符標(biāo)識符 字符串字符串 由由“# #”開始的命令是開始的命令是C C預(yù)處理命令。預(yù)處理命令。 “define”“define”為宏為宏定義命令。定義命令。“標(biāo)識符標(biāo)識符”為所定義的宏名。為所定義的宏名。“字符串字符串”可以可以是常數(shù)、表達(dá)式、格式串等。是常數(shù)、表達(dá)式、格式串等。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)
3、系3 在前面已經(jīng)介紹過的符號常量的定義就是一種無參宏定義,在前面已經(jīng)介紹過的符號常量的定義就是一種無參宏定義,例如:例如: #define PI 3.1415926 #define PI 3.1415926 此外,對程序中反復(fù)使用的表達(dá)式進(jìn)行宏定義此外,對程序中反復(fù)使用的表達(dá)式進(jìn)行宏定義, ,給程序的書給程序的書寫將帶來很大的方便,例如:寫將帶來很大的方便,例如: #define N (2 #define N (2* *a+2a+2* *a a* *a)a)在編寫源程序時,所有的在編寫源程序時,所有的(2(2* *a+2a+2* *a a* *a)a)都可由都可由N N代替,而對源程代替,而對
4、源程序作編譯時,將先由預(yù)處理程序進(jìn)行宏替換,即用序作編譯時,將先由預(yù)處理程序進(jìn)行宏替換,即用(2(2* *a+2a+2* *a a* *a)a)表達(dá)式去置換所有的宏名表達(dá)式去置換所有的宏名N N,然后再進(jìn)行編譯。,然后再進(jìn)行編譯。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系4【例例8.18.1】#define N #define N (2(2* *a+2a+2* *a a* *a)a)main()main() int s,a; int s,a; scanf(%d,&a); scanf(%d,&a); s=N+N s=N+N* *N;N; printf(s=%dn,s); printf(s=
5、%dn,s); 上例程序中首先進(jìn)行宏定義,定義上例程序中首先進(jìn)行宏定義,定義N N來替代表達(dá)式來替代表達(dá)式(2(2* *a+2a+2* *a a* *a),a),在在s= N+Ns= N+N* *N N中作了宏調(diào)用。在預(yù)處理時經(jīng)宏展中作了宏調(diào)用。在預(yù)處理時經(jīng)宏展開后該語句變?yōu)椋洪_后該語句變?yōu)椋簊=(2s=(2* *a+2a+2* *a a* *a)+ (2a)+ (2* *a+2a+2* *a a* *a)a)* * (2 (2* *a+2a+2* *a a* *a)a)注意注意:在宏定義中表達(dá)式:在宏定義中表達(dá)式(2(2* *a+2a+2* *a a* *a)a)兩邊的括號不能少。兩邊的括號
6、不能少。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系5對于宏定義還要說明以下幾點(diǎn)對于宏定義還要說明以下幾點(diǎn):1.1. 宏宏名的前后應(yīng)有空格,以便準(zhǔn)確地辨認(rèn)宏名,如果沒有留空格,則程名的前后應(yīng)有空格,以便準(zhǔn)確地辨認(rèn)宏名,如果沒有留空格,則程序運(yùn)行結(jié)果會出錯。序運(yùn)行結(jié)果會出錯。2.2. 宏定義是用宏名來表示一個字符串,這只是一種簡單的替換,字符串宏定義是用宏名來表示一個字符串,這只是一種簡單的替換,字符串中可以含任何字符,可以是常數(shù),也可以是表達(dá)式,預(yù)處理程序?qū)λ锌梢院魏巫址梢允浅?shù),也可以是表達(dá)式,預(yù)處理程序?qū)λ蛔魅魏螜z查。如有錯誤,只能在編譯已被宏展開后的源程序時發(fā)現(xiàn)。不作任何檢查。如有錯誤,只
7、能在編譯已被宏展開后的源程序時發(fā)現(xiàn)。3.3. 習(xí)慣上宏名用大寫字母表示,以便于與變量區(qū)別。但也允許用小寫字習(xí)慣上宏名用大寫字母表示,以便于與變量區(qū)別。但也允許用小寫字母。母。4.4. 宏定義不是語句,在行末不必加分號,如加上分號則連分號也一起置宏定義不是語句,在行末不必加分號,如加上分號則連分號也一起置換。換。5.5. 宏定義必須寫在函數(shù)之外,其有效范圍為宏定義命令起到源程序結(jié)束宏定義必須寫在函數(shù)之外,其有效范圍為宏定義命令起到源程序結(jié)束。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系66.6. 可以使用可以使用#undef#undef命令終止宏定義的作用域。命令終止宏定義的作用域。【例例8.28.2】#d
8、efine M 10#define M 10 main() main() #undef M #undef Mf1()f1() 7.7. 宏宏名在源程序中若用引號括起來,則預(yù)處理程序不對其作名在源程序中若用引號括起來,則預(yù)處理程序不對其作宏代換宏代換。【例例8.38.3】#define L 80#define L 80main()main() printf(“L”); printf(“L”); printf(n); printf(n); M在main函數(shù)中有效,在f1中無效。 宏名L在printf語句中用引號標(biāo)示,因此不作宏代換。程序的運(yùn)行結(jié)果為:L表示把“L”當(dāng)字符處理。遼寧石油化工大學(xué)計算機(jī)
9、基礎(chǔ)教學(xué)系78.8. 在進(jìn)行宏定義時,可以使用已經(jīng)定義的宏名。在宏展開時由預(yù)處理在進(jìn)行宏定義時,可以使用已經(jīng)定義的宏名。在宏展開時由預(yù)處理程序?qū)訉哟鷵Q。程序?qū)訉哟鷵Q。例如:例如: #define PI 3.1415926 #define PI 3.1415926 # #define S PIdefine S PI* *r r* *r /r /* * PI PI是已定義的宏名是已定義的宏名* */ /對語句:對語句: printf(%f,S); printf(%f,S);在宏代換后變?yōu)椋涸诤甏鷵Q后變?yōu)椋?printf(%f,3.1415926 printf(%f,3.1415926* *r r*
10、 *r r););9.9. 對對“輸出格式輸出格式”作宏定義,可以減少書寫麻煩。作宏定義,可以減少書寫麻煩。【例例8.48.4】#define P printf#define P printf#define D %#define D %dndn#define F #define F % %fnfnmain()main() int a=5, c=8, e=11; int a=5, c=8, e=11; float b=3.8, d=9.7, f=21.08; float b=3.8, d=9.7, f=21.08; P(D F,a,b); P(D F,a,b); P(D F,c,d); P(D
11、F,c,d); P(D F,e,f); P(D F,e,f); 遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系88.1.28.1.2帶參宏定義帶參宏定義 語言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱為形式參數(shù),在宏調(diào)語言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱為形式參數(shù),在宏調(diào)用中的參數(shù)稱為實(shí)際參數(shù)。用中的參數(shù)稱為實(shí)際參數(shù)。 對帶參數(shù)的宏,在調(diào)用中,不僅要宏展開,而且要用實(shí)參去代換形對帶參數(shù)的宏,在調(diào)用中,不僅要宏展開,而且要用實(shí)參去代換形參。參。帶參宏定義的一般形式為:帶參宏定義的一般形式為: #define #define 宏名宏名( (形式參數(shù)表形式參數(shù)表) ) 字符串字符串 其中,形式參數(shù)稱為宏名的形式參數(shù);構(gòu)
12、成宏體的字符串中應(yīng)該包其中,形式參數(shù)稱為宏名的形式參數(shù);構(gòu)成宏體的字符串中應(yīng)該包含所指的形式參數(shù),宏名與后續(xù)括號之間不能留空格。含所指的形式參數(shù),宏名與后續(xù)括號之間不能留空格。例如:例如:#define SR(n) n#define SR(n) n* *n n#define DR(a#define DR(a,b) a+bb) a+b 對于帶參數(shù)的宏,調(diào)用時必須使用參數(shù),這些參數(shù)稱為實(shí)際參數(shù),對于帶參數(shù)的宏,調(diào)用時必須使用參數(shù),這些參數(shù)稱為實(shí)際參數(shù),簡稱實(shí)參。帶參宏調(diào)用的一般形式為:簡稱實(shí)參。帶參宏調(diào)用的一般形式為: 宏名宏名( (實(shí)參表實(shí)參表) );例如:例如: x1=SR(6)x1=SR(6
13、); x2=SR(x+y) x2=SR(x+y); y1=DR(3,4) y1=DR(3,4); y2=DR(a+b y2=DR(a+b,b+c)b+c); 宏調(diào)用時,其實(shí)參的個數(shù)與次序應(yīng)與宏定義時的形參一一對應(yīng),且實(shí)參宏調(diào)用時,其實(shí)參的個數(shù)與次序應(yīng)與宏定義時的形參一一對應(yīng),且實(shí)參必須有確定的值。必須有確定的值。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系9【例例8.58.5】求求a a,b b兩個數(shù)中較大者。兩個數(shù)中較大者。#define MAX(a,b) (ab)?#define MAX(a,b) (ab)?a:b /a:b /* *宏定義宏定義* */ /mainmain()() int a,b,c
14、,max; int a,b,c,max; scanf(%d%d,&a,&b); scanf(%d%d,&a,&b); max=MAX(a,b max=MAX(a,b); /); /* *宏宏代代換,實(shí)參換,實(shí)參a a,b b代換形參代換形參a a,b b* */ / printf(max=%dn,max); printf(max=%dn,max); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果: 3 5 3 5 max=5 max=5對對于帶參的宏定義有以下問題需要說明:于帶參的宏定義有以下問題需要說明:1.1. 帶參宏定義中,宏名和形參表之間不能有空格出現(xiàn)帶參宏定義中,宏名和形
15、參表之間不能有空格出現(xiàn)。 如如:#define SR (n) n#define SR (n) n* *n n,編譯預(yù)處理程序?qū)押昝膮?shù)與,編譯預(yù)處理程序?qū)押昝膮?shù)與宏體都看成是宏體,在展開后編譯出錯宏體都看成是宏體,在展開后編譯出錯。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系102.2. 在帶參宏定義中,形式參數(shù)是字符,不分配內(nèi)存單元,不需說明類型。而宏調(diào)用在帶參宏定義中,形式參數(shù)是字符,不分配內(nèi)存單元,不需說明類型。而宏調(diào)用中的實(shí)參有具體的值。要用它們?nèi)ゴ鷵Q形參,因此必須作類型說明。這是與函數(shù)中的實(shí)參有具體的值。要用它們?nèi)ゴ鷵Q形參,因此必須作類型說明。這是與函數(shù)中的情況不同的。在函數(shù)中,形參和
16、實(shí)參是兩個不同的量,各有自己的作用域,中的情況不同的。在函數(shù)中,形參和實(shí)參是兩個不同的量,各有自己的作用域,調(diào)用時要把實(shí)參值賦予形參,進(jìn)行調(diào)用時要把實(shí)參值賦予形參,進(jìn)行“值傳遞值傳遞”。3.3. 在宏定義中的形參是標(biāo)識符,而宏調(diào)用中的實(shí)參可以是表達(dá)式。在宏定義中的形參是標(biāo)識符,而宏調(diào)用中的實(shí)參可以是表達(dá)式。【例例8.68.6】#define SA(x) (x)#define SA(x) (x)* *(x)(x)mainmain()() int int a,s;a,s; scanf(%d,&a); scanf(%d,&a); s=SA(a+1 s=SA(a+1); /); /*
17、*實(shí)參為實(shí)參為a+1a+1,在,在宏展開時,用宏展開時,用a+1a+1代換代換x x,再用,再用(x)(x)* *(x) (x) 代換代換SASA, 得到得到s s=(a+1)=(a+1)* *(a+1(a+1););* */ / printf(s=%dn,s);printf(s=%dn,s); 運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:3 3 s=16s=16遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系114.4. 在宏定義中,字符串內(nèi)的形參通常要用括號括起來以避免出錯。如果在宏定義中,字符串內(nèi)的形參通常要用括號括起來以避免出錯。如果去掉括號,把程序改為以下形式:去掉括號,把程序改為以下形式:【例例8.78.7】#def
18、ine SA(x) x#define SA(x) x* *x xmainmain()() int a,s; int a,s; scanf(%d,&a); scanf(%d,&a); s=SA(a+1); s=SA(a+1); printf(s=%dn,s); printf(s=%dn,s); 運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:3 3 s=7s=7同樣輸入同樣輸入3 3,但結(jié)果卻是不一樣的。這是由于代換只作符號代換而不作其,但結(jié)果卻是不一樣的。這是由于代換只作符號代換而不作其它處理而造成的。宏代換后將得到以下語句:它處理而造成的。宏代換后將得到以下語句: s=a+1 s=a+1* *a+1
19、a+1; ;由于由于a a為為3 3故故s s的值為的值為7 7。因此參數(shù)兩邊的括號是不能少的。因此參數(shù)兩邊的括號是不能少的。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系12例例【8.88.8】mainmain()() int i=1; int i=1; while(i=5) while(i=5) printf(%dn,B(i+); printf(%dn,B(i+); B(int x)B(int x) return(x) return(x)* *(x);(x); 程序的運(yùn)行結(jié)果:程序的運(yùn)行結(jié)果:1 14 49 916162525【例例8.98.9】#define B(x) (x)#define B(x)
20、(x)* *(x)(x)mainmain()() int i=1; int i=1; while(i=5) while(i=5) printf(%dn,B(i+); printf(%dn,B(i+); 程序的運(yùn)行結(jié)果為:程序的運(yùn)行結(jié)果為:2 2121230305.5. 帶參的宏和帶參函數(shù)很相似,但有本質(zhì)上的不同,除上面已談到的各點(diǎn)帶參的宏和帶參函數(shù)很相似,但有本質(zhì)上的不同,除上面已談到的各點(diǎn)外,把同一表達(dá)式用函數(shù)處理與用宏處理兩者的結(jié)果有可能是不同的。外,把同一表達(dá)式用函數(shù)處理與用宏處理兩者的結(jié)果有可能是不同的。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系138.28.2文件包含文件包含 在在前面各章中使
21、用系統(tǒng)函數(shù)時,已經(jīng)使用了文件包含命令。文件包含是前面各章中使用系統(tǒng)函數(shù)時,已經(jīng)使用了文件包含命令。文件包含是C C預(yù)處理程序的另一個重要功能。預(yù)處理程序的另一個重要功能。文件包含命令行的一般形式為:文件包含命令行的一般形式為: # #include include 文件名文件名 #include#include文件包含命令的功能是把指定的文件插入該命令行位置取代該命文件包含命令的功能是把指定的文件插入該命令行位置取代該命令行,從而把指定的文件和當(dāng)前的源程序文件連成一個源文件。文件應(yīng)使令行,從而把指定的文件和當(dāng)前的源程序文件連成一個源文件。文件應(yīng)使用雙引號或尖括號用雙引號或尖括號“ ”括起來。例
22、如:括起來。例如: # #includestdio.hincludestdio.h #include math.h #include 對文件包含命令還要說明以下幾點(diǎn):對文件包含命令還要說明以下幾點(diǎn):1.1. 包含命令中的文件名可以用雙引號括起來,也可以用尖括號括起來包含命令中的文件名可以用雙引號括起來,也可以用尖括號括起來。使用使用尖括號表示在包含文件目錄中去查尖括號表示在包含文件目錄中去查找,找,而不在源文件目錄去查找而不在源文件目錄去查找;使使用雙引號則表示首先在當(dāng)前的源文件目錄中查找,若未找到才到包用雙引號則表示首先在當(dāng)前的源文件目錄中查找,若未找到才到包含目錄中去查找。用戶編程時可根據(jù)
23、自己文件所在的目錄來選擇某一含目錄中去查找。用戶編程時可根據(jù)自己文件所在的目錄來選擇某一種命令形式。種命令形式。2.2. 一個一個includeinclude命令只能指定一個被包含文件,若有多個文件要包含,則命令只能指定一個被包含文件,若有多個文件要包含,則需用多個需用多個includeinclude命令。命令。3.3. 文件包含命令也允許嵌套到其它文件中。文件包含命令也允許嵌套到其它文件中。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系148.38.3條件編譯條件編譯 預(yù)預(yù)處理程序提供了條件編譯的功能。條件編譯就是對某段程序設(shè)置一處理程序提供了條件編譯的功能。條件編譯就是對某段程序設(shè)置一定的條件,符合條件
24、才能編譯這段程序。定的條件,符合條件才能編譯這段程序。條件編譯命令一般有以下三種形式:條件編譯命令一般有以下三種形式:1.1. 第第一種形式:一種形式: # #ifdef ifdef 標(biāo)識符標(biāo)識符 程程序段序段1 1 # #elseelse 程程序段序段2 2 # #endifendif其中的標(biāo)識符是一個符號常量,如果標(biāo)識符已被其中的標(biāo)識符是一個符號常量,如果標(biāo)識符已被 #define #define命令定義過則對命令定義過則對程序段程序段1 1進(jìn)行編譯;否則對程序段進(jìn)行編譯;否則對程序段2 2進(jìn)行編譯。進(jìn)行編譯。此命令形式中的此命令形式中的#else#else以及其后的程序段以及其后的程序段
25、2 2可以省略,即可以寫為:可以省略,即可以寫為: # #ifdef ifdef 標(biāo)識符標(biāo)識符 程程序序段段1 1 # #endifendif即如果標(biāo)識符已被即如果標(biāo)識符已被 #define #define命令定義過則對程序段命令定義過則對程序段1 1進(jìn)行編譯;否則不編譯進(jìn)行編譯;否則不編譯程序段程序段1 1。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系15【例例8.108.10】條件編譯應(yīng)用舉例一。條件編譯應(yīng)用舉例一。#include #include #define Max 100#define Max 100main()main() int i=10;int i=10;float x=12.5;fl
26、oat x=12.5;#ifdef MAX#ifdef MAXprintf(“%dn”,i);printf(“%dn”,i);#else#elseprintf(“%.1fn”,x);printf(“%.1fn”,x);#endif#endifprintf(“%d,%.1fn”,i,x);printf(“%d,%.1fn”,i,x); 程序的運(yùn)行結(jié)果是:程序的運(yùn)行結(jié)果是: 10 10 10 10,12.512.5遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系162.2. 第二種形式:第二種形式: #ifndef #ifndef 標(biāo)識符標(biāo)識符 程程序段序段1 1 # #else else 程程序段序段2 2 #
27、endif#endif 與與第一種形式的區(qū)別是將第一種形式的區(qū)別是將“ifdef”“ifdef”改為改為“ifndef”“ifndef”。它的功能是,如。它的功能是,如果標(biāo)識符未被果標(biāo)識符未被#define#define命令定義過則對程序段命令定義過則對程序段1 1進(jìn)行編譯,否則對程序段進(jìn)行編譯,否則對程序段2 2進(jìn)進(jìn)行編譯。這與第一種形式的功能正相反。行編譯。這與第一種形式的功能正相反。3.3. 第三種形式:第三種形式: #if #if 常量表達(dá)式常量表達(dá)式 程程序段序段1 1 # #else else 程序段程序段2 2 # #endifendif 它它的功能是,如常量表達(dá)式的值為真的功能
28、是,如常量表達(dá)式的值為真( (非非0)0),則對程序段,則對程序段1 1 進(jìn)行編譯,進(jìn)行編譯,否則對程序段否則對程序段2 2進(jìn)行編譯。因此可以使程序在不同條件下,完成不同的功能。進(jìn)行編譯。因此可以使程序在不同條件下,完成不同的功能。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系17【例例8.118.11】#define M 5#define M 5main()main() float c,r,s; float c,r,s; printf (input a number: ); printf (input a number: ); scanf(%f,&c); scanf(%f,&c); #if
29、 M #if M r=3.14159 r=3.14159* *c c* *c;c; printf(area of round is: %fn,r); printf(area of round is: %fn,r); #else #else s=c s=c* *c;c;printf(area of square is: %fn,s);printf(area of square is: %fn,s);#endif#endif 本例中采用了第三種形式的條件編譯。在程序第一行宏定義中,定義本例中采用了第三種形式的條件編譯。在程序第一行宏定義中,定義M M為為5 5,因此在條件編譯時,常量表達(dá)式的值為真
30、,故計算并輸出圓面積。,因此在條件編譯時,常量表達(dá)式的值為真,故計算并輸出圓面積。 上面介紹的條件編譯當(dāng)然也可以用條件語句來實(shí)現(xiàn)。上面介紹的條件編譯當(dāng)然也可以用條件語句來實(shí)現(xiàn)。 但是用條件語句但是用條件語句將會對整個源程序進(jìn)行編譯,生成的目標(biāo)代碼程序很長,而采用條件編譯,將會對整個源程序進(jìn)行編譯,生成的目標(biāo)代碼程序很長,而采用條件編譯,則根據(jù)條件只編譯其中的程序段則根據(jù)條件只編譯其中的程序段1 1或程序段或程序段2 2,生成的目標(biāo)程序較短。使用,生成的目標(biāo)程序較短。使用條件編譯可以增強(qiáng)程序的可移植性。條件編譯可以增強(qiáng)程序的可移植性。遼寧石油化工大學(xué)計算機(jī)基礎(chǔ)教學(xué)系188.4 main8.4 m
31、ain函數(shù)的參數(shù)函數(shù)的參數(shù) 在前面介紹的程序中,在前面介紹的程序中,mainmain函數(shù)都是不帶參數(shù)的,一般寫成如下形式:函數(shù)都是不帶參數(shù)的,一般寫成如下形式:main()main()。實(shí)際上,。實(shí)際上,mainmain函數(shù)可以帶參數(shù),其一般形式如下:函數(shù)可以帶參數(shù),其一般形式如下: main (int argc,char main (int argc,char * *argv )argv ) 這個參數(shù)可以認(rèn)為是這個參數(shù)可以認(rèn)為是 main main函數(shù)的形式參數(shù)。函數(shù)的形式參數(shù)。mainmain函數(shù)的參數(shù)是固定函數(shù)的參數(shù)是固定的,形參的,形參 argc argc是一個整型變量是一個整型變量, ,形參形參argvargv是一個指向字符串的指針數(shù)組。是一個指向字符串的指針數(shù)組。 由于由于mainmain函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序的其它函數(shù)中函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序的其它函數(shù)中內(nèi)部取得參數(shù)值,只能來自程序之外,由于內(nèi)部取得參數(shù)值,只能來自程序之外,由于mainmain函數(shù)是由系統(tǒng)調(diào)用的,因函數(shù)是由系統(tǒng)調(diào)用的,因此它只能通過系統(tǒng)的命令行給出。命令行的一般形式為:此它只能通過系統(tǒng)的命令行給出。命令行的一般形式為: 可執(zhí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 插畫課件兒童簡筆畫
- 睡眠障礙護(hù)理課件
- 2025年農(nóng)業(yè)資源高效利用與環(huán)境保護(hù)策略研究報告001
- 2025年農(nóng)業(yè)生物技術(shù)在果樹種業(yè)創(chuàng)新中的應(yīng)用與突破研究
- 武理工工程熱力學(xué)與傳熱學(xué)課件第17章 輻射換熱
- 日本概覽講課件
- 智能課堂中的在線教學(xué)資源建設(shè)
- 廣東云浮中醫(yī)藥職業(yè)學(xué)院《建筑畫表現(xiàn)技法》2023-2024學(xué)年第二學(xué)期期末試卷
- 學(xué)習(xí)障礙干預(yù)策略教育心理學(xué)的實(shí)踐應(yīng)用
- 泰山職業(yè)技術(shù)學(xué)院《影視批評與策展》2023-2024學(xué)年第二學(xué)期期末試卷
- 《哪吒魔童降世》幼兒園小學(xué)少兒美術(shù)教育繪畫課件創(chuàng)意教程教案
- 2024年中考模擬試卷生物(揚(yáng)州卷)(考試版A3)
- 2022年全國森林、草原、濕地調(diào)查監(jiān)測技術(shù)規(guī)程-附錄
- 2025年春新北師大版數(shù)學(xué)一年級下冊課件 綜合實(shí)踐 設(shè)計教室裝飾圖
- 2025年山西焦煤西山煤電集團(tuán)招聘筆試參考題庫含答案解析
- 森林防火工程技術(shù)標(biāo)準(zhǔn)
- 培訓(xùn)學(xué)校教師考核與管理制度
- 創(chuàng)傷性硬膜下出血的護(hù)理查房
- 企業(yè)食堂安全培訓(xùn)課件
- 解放汽車銷售合同范例
- 2024-2030年中國壓濾機(jī)行業(yè)發(fā)展前景調(diào)研與投資策略分析報告
評論
0/150
提交評論