




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第0404章章 函數(shù)函數(shù) ?C+ ?C+程序設(shè)計根程序設(shè)計根底教程底教程? ?課件課件5函數(shù)分類函數(shù)分類分類分類1用戶使用的角度用戶使用的角度(1) 系統(tǒng)函數(shù)系統(tǒng)函數(shù),即,即庫函數(shù)庫函數(shù)。由編譯系統(tǒng)提供,用戶。由編譯系統(tǒng)提供,用戶不必自己定義,可直接使用。不必自己定義,可直接使用。(2) 自定義函數(shù)自定義函數(shù)。解決用戶的專門需要。解決用戶的專門需要。分類分類2函數(shù)的形式函數(shù)的形式(1) 無參函數(shù)無參函數(shù)。調(diào)用時。調(diào)用時不必不必給出參數(shù)。給出參數(shù)。(2) 有參函數(shù)有參函數(shù)。調(diào)用時。調(diào)用時需需給出參數(shù)。主調(diào)函數(shù)和被給出參數(shù)。主調(diào)函數(shù)和被調(diào)用函數(shù)之間有數(shù)據(jù)傳遞。調(diào)用函數(shù)之間有數(shù)據(jù)傳遞。64.2 函
2、數(shù)定義與函數(shù)聲明函數(shù)定義與函數(shù)聲明定義無參函數(shù)的一般形式定義無參函數(shù)的一般形式類型標(biāo)識符類型標(biāo)識符 函數(shù)名函數(shù)名void 聲明局部聲明局部 語句語句 定義有參函數(shù)的一般形式定義有參函數(shù)的一般形式類型標(biāo)識符類型標(biāo)識符 函數(shù)名形式參數(shù)表列函數(shù)名形式參數(shù)表列 聲明局部聲明局部 語句語句 int Max(int x, int y) return xy?x:y;4.2.2 函數(shù)的返回值函數(shù)的返回值 1函數(shù)返回值是通過函數(shù)返回值是通過return語句獲得。一個函語句獲得。一個函數(shù)中可有一個以上的數(shù)中可有一個以上的return語句。在函數(shù)被調(diào)用語句。在函數(shù)被調(diào)用執(zhí)行時,只要遇到一個執(zhí)行時,只要遇到一個ret
3、urn語句,就將忽略函語句,就將忽略函數(shù)體中剩余代碼,立刻返回到主調(diào)程序。數(shù)體中剩余代碼,立刻返回到主調(diào)程序。2如果函數(shù)類型和如果函數(shù)類型和return語句中表達(dá)式值不一語句中表達(dá)式值不一致,那么以函數(shù)類型為準(zhǔn)。對數(shù)值型數(shù)據(jù)將自致,那么以函數(shù)類型為準(zhǔn)。對數(shù)值型數(shù)據(jù)將自動進(jìn)行類型轉(zhuǎn)換。動進(jìn)行類型轉(zhuǎn)換。3當(dāng)函數(shù)沒有返回值時,返回類型須用當(dāng)函數(shù)沒有返回值時,返回類型須用void說說明,這時函數(shù)體中可以沒有明,這時函數(shù)體中可以沒有return語句,也可以語句,也可以有不帶表達(dá)式的有不帶表達(dá)式的return語句,如下所示:語句,如下所示:return ;74.2.3 函數(shù)聲明函數(shù)聲明函數(shù)聲明形式:函數(shù)聲
4、明形式:返回值類型返回值類型 函數(shù)名函數(shù)名 (形參表形參表); 函數(shù)聲明告訴編譯器該函數(shù)的返回類型、函數(shù)名函數(shù)聲明告訴編譯器該函數(shù)的返回類型、函數(shù)名和形參表。在主調(diào)函數(shù)定義之前。和形參表。在主調(diào)函數(shù)定義之前。8int Max(int x, int y) return xy?x:y;int Max(int x, int y);int Max(int ,int );int Max(int,double);int Max(int,int,int);9函數(shù)定義函數(shù)定義 PK 函數(shù)聲明函數(shù)聲明函數(shù)定義:函數(shù)功能確實立,包括指定函數(shù)函數(shù)定義:函數(shù)功能確實立,包括指定函數(shù)名、函數(shù)類型、形參及其類型、函數(shù)體等
5、。名、函數(shù)類型、形參及其類型、函數(shù)體等。函數(shù)聲明:把函數(shù)名、函數(shù)類型以及形參的函數(shù)聲明:把函數(shù)名、函數(shù)類型以及形參的個數(shù)、類型和順序個數(shù)、類型和順序(注意,不包括函數(shù)體注意,不包括函數(shù)體)通通知編譯系統(tǒng),以便在對包含函數(shù)調(diào)用的語句知編譯系統(tǒng),以便在對包含函數(shù)調(diào)用的語句進(jìn)行編譯時進(jìn)行對照檢查。進(jìn)行編譯時進(jìn)行對照檢查。函數(shù)聲明中可不寫形參名,只寫形參類型。函數(shù)聲明中可不寫形參名,只寫形參類型。4.3 函數(shù)的調(diào)用函數(shù)的調(diào)用n 調(diào)用函數(shù)就是執(zhí)行該函數(shù)的函數(shù)體。調(diào)用函數(shù)就是執(zhí)行該函數(shù)的函數(shù)體。n 調(diào)用其他函數(shù)的函數(shù)稱為主調(diào)函數(shù),被其他函數(shù)調(diào)用其他函數(shù)的函數(shù)稱為主調(diào)函數(shù),被其他函數(shù)調(diào)用的函數(shù)稱為被調(diào)函數(shù)。
6、調(diào)用的函數(shù)稱為被調(diào)函數(shù)。 n 4.3.1 函數(shù)調(diào)用的概念函數(shù)調(diào)用的概念n 函數(shù)調(diào)用的一般形式為:函數(shù)名函數(shù)調(diào)用的一般形式為:函數(shù)名(實參表實參表)n 形式參數(shù)和實際參數(shù)形式參數(shù)和實際參數(shù)n 形式參數(shù)形參:在定義形式參數(shù)形參:在定義/聲明函數(shù)時函數(shù)名后聲明函數(shù)時函數(shù)名后面括號中的變量名。面括號中的變量名。n 實際參數(shù)實參:在調(diào)用函數(shù)時,函數(shù)名后面實際參數(shù)實參:在調(diào)用函數(shù)時,函數(shù)名后面括號中的參數(shù)括號中的參數(shù)(常量、變量、表達(dá)式常量、變量、表達(dá)式)。10114.3.1 函數(shù)調(diào)用的概念函數(shù)調(diào)用的概念1. 函數(shù)語句函數(shù)語句單獨作為一個語句單獨作為一個語句。不要求帶回值,只要求完成某。不要求帶回值,只要
7、求完成某種操作。種操作。2. 函數(shù)表達(dá)式函數(shù)表達(dá)式出現(xiàn)在表達(dá)式中出現(xiàn)在表達(dá)式中,要求帶回一個值以參加運算。,要求帶回一個值以參加運算。c=2*Max(a,b);3. 函數(shù)參數(shù)函數(shù)參數(shù)作為其他函數(shù)的一個實參。作為其他函數(shù)的一個實參。m = Max1 (a , Max ( b , c ) ) ;12對被調(diào)用函數(shù)的聲明和函數(shù)原型對被調(diào)用函數(shù)的聲明和函數(shù)原型1.被調(diào)用函數(shù)必須已經(jīng)存在被調(diào)用函數(shù)必須已經(jīng)存在(庫函數(shù)或用戶自己定庫函數(shù)或用戶自己定義函數(shù)義函數(shù))。但僅有這一條件還不夠。但僅有這一條件還不夠。2.假設(shè)使用庫函數(shù),應(yīng)在文件開頭用假設(shè)使用庫函數(shù),應(yīng)在文件開頭用#include 將將調(diào)用有關(guān)庫函數(shù)時
8、所需用到的信息調(diào)用有關(guān)庫函數(shù)時所需用到的信息“包含進(jìn)來。包含進(jìn)來。3.假設(shè)使用用戶自定義函數(shù),且該函數(shù)位置在調(diào)假設(shè)使用用戶自定義函數(shù),且該函數(shù)位置在調(diào)用它的函數(shù)用它的函數(shù)(即主調(diào)函數(shù)即主調(diào)函數(shù))的后面,那么應(yīng)該在主的后面,那么應(yīng)該在主調(diào)函數(shù)中對被調(diào)用函數(shù)作聲明調(diào)函數(shù)中對被調(diào)用函數(shù)作聲明declaration。13例例4.3 對被調(diào)用的函數(shù)作聲明對被調(diào)用的函數(shù)作聲明float add(float x,float y) return x+y; void main( ) float add(float x,float y); /函數(shù)聲明函數(shù)聲明 float a,b,c; coutab; c=add(
9、a,b); cout sum= cendl; 中國礦業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院中國礦業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院14實參和形參實參和形參:例例 main() int a=15,b=20,c;c=Max(a+10,b); cout“Max=“y?x:y;return z; 4.3 函數(shù)參數(shù)和函數(shù)的值函數(shù)參數(shù)和函數(shù)的值main函數(shù)函數(shù)Max函數(shù)函數(shù)形參形參實參實參1520中國礦業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院中國礦業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院15圖4-2 Max函數(shù)調(diào)用4.3 函數(shù)參數(shù)和函數(shù)的值函數(shù)參數(shù)和函數(shù)的值16(4) 實參對形參的數(shù)據(jù)傳遞是實參對形參的數(shù)據(jù)傳遞是“值傳遞,即單向值傳遞,即單向傳遞,只由
10、實參傳給形參。傳遞,只由實參傳給形參。注意:注意: 實參單元與形參單元是不同的單元。實參單元與形參單元是不同的單元。調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保存調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保存原值。形參值發(fā)生改變,并不會改變主調(diào)函數(shù)中原值。形參值發(fā)生改變,并不會改變主調(diào)函數(shù)中實參的值。實參的值。有關(guān)形參與實參的說明有關(guān)形參與實參的說明15204.3.2 函數(shù)的傳值調(diào)用函數(shù)的傳值調(diào)用void main() int m=10,n=20; cout調(diào)用前:調(diào)用前:m=m, n=nendl; void Interchange (int x ,int y); Interchange (m,n);
11、 cout調(diào)用后:調(diào)用后:m=m, n=nendl;void Interchange (int x ,int y) cout交換前:交換前:x=x, y=yendl; int temp; temp=x; x=y; y=temp; cout交換后:交換后:x=x, y=yendl;17【例例4-5】Interchange函數(shù)試圖交換實參的值。函數(shù)試圖交換實參的值。【例例4-5】Interchange函數(shù)試圖交換實參的值。函數(shù)試圖交換實參的值。18圖圖4-3 傳值函數(shù)調(diào)用傳值函數(shù)調(diào)用n 默認(rèn)值參數(shù)默認(rèn)參數(shù):在編寫函數(shù)時為形參提供默默認(rèn)值參數(shù)默認(rèn)參數(shù):在編寫函數(shù)時為形參提供默認(rèn)值。用戶在調(diào)用函數(shù)時,
12、如果沒有為對應(yīng)參數(shù)指定實認(rèn)值。用戶在調(diào)用函數(shù)時,如果沒有為對應(yīng)參數(shù)指定實參值,那么系統(tǒng)采用默認(rèn)值作為函數(shù)實參。參值,那么系統(tǒng)采用默認(rèn)值作為函數(shù)實參。n double totalCost(double unitPrice, int num=1, double discountRate=0.8) /函數(shù)定義函數(shù)定義 n n return num*unitPrice*discountRate;n n 在默認(rèn)值形參右邊,不能出現(xiàn)無默認(rèn)值的形參。在默認(rèn)值形參右邊,不能出現(xiàn)無默認(rèn)值的形參。n )4.3.3 默認(rèn)值參數(shù)默認(rèn)值參數(shù)19204.4 函數(shù)的重載函數(shù)的重載int Abs_Int(int a); do
13、uble Abs_Double(double a); char Abs_Char(char a); 函數(shù)重載函數(shù)重載(function overloading):用同一函用同一函數(shù)名定義多個函數(shù),這些函數(shù)的數(shù)名定義多個函數(shù),這些函數(shù)的參數(shù)個數(shù)參數(shù)個數(shù)和和參數(shù)類型參數(shù)類型不同不同。特點特點:一名多用。:一名多用。21例例4.6 求一個數(shù)中絕對值求一個數(shù)中絕對值int main( ) int i=-76; cout i_Abs= Abs(i); double d=23.56; cout“d_Abs=Abs(d); char c=-65; cout“c_Abs=0?a:-a; char Abs(ch
14、ar a)return a=0?a:-a; double Abs(double a)return a=0?a:-a; 22*4.5 函數(shù)模板函數(shù)模板(function template)建立一個通用函數(shù),其函數(shù)類型和形參類建立一個通用函數(shù),其函數(shù)類型和形參類型不具體指定,用虛擬類型來代表。型不具體指定,用虛擬類型來代表。但凡函數(shù)體相同的函數(shù)都可以用這個模板但凡函數(shù)體相同的函數(shù)都可以用這個模板來代替,不必定義多個函數(shù),只需在模板來代替,不必定義多個函數(shù),只需在模板中定義一次。中定義一次。23int main( ) int i=-76,i; double d=56.87,d; char c1=-6
15、5,c; i=Abs(i1); /T被被int取代取代 d=Abs(d1); /T被被double取代取代 c=Abs(c1); /T被被char取代取代 couti_Abs=iendl; cout“d_Abs=dendl; cout“c_Abs=cendl;*4.5 函數(shù)模板函數(shù)模板(function template)template T Abs(T a)return a=0?a:-a;244.6 函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用不許不許嵌套定義嵌套定義,但可,但可嵌套調(diào)用嵌套調(diào)用?!纠?-9】用弦截法求下面方程的根。用弦截法求下面方程的根。 080165)(23xxxxf圖4-5 弦截法示
16、意圖 XY#include #include void main( ) double x1,x2,f1,f2,x;docoutx1x2;f1=f(x1);f2=f(x2); while(f1*f2=0);x=root(x1,x2);coutsetiosflags(ios:fixed)setprecision(7); cout方程的根為:方程的根為:x0)y1=y;x1=x;elsex2=x;while(fabs(y)=0.00001);return x;【例例4-9】用弦截法求下面方程的根。用弦截法求下面方程的根。 294.7 函數(shù)的遞歸調(diào)用函數(shù)的遞歸調(diào)用遞歸調(diào)用遞歸調(diào)用:函數(shù)直接或間接地調(diào)用
17、該函數(shù)直接或間接地調(diào)用該函數(shù)函數(shù)本身本身。分類分類:直接遞歸直接遞歸和和間接遞歸間接遞歸直接遞歸直接遞歸間接遞歸間接遞歸30long fac(int n) /遞歸函數(shù)遞歸函數(shù) long f; if(n0) coutn0,data error!1時,進(jìn)行遞歸調(diào)用時,進(jìn)行遞歸調(diào)用 return f; /將將f的值作為函數(shù)值返回的值作為函數(shù)值返回0 用遞歸方法求!用遞歸方法求!please input an integer:10 10!=3628800314.8 存儲類別存儲類別靜態(tài)存儲方式靜態(tài)存儲方式:在程序運行期間,在程序運行期間,系統(tǒng)系統(tǒng)對變量分對變量分配配固定固定的存儲空間的存儲空間。動態(tài)存
18、儲方式動態(tài)存儲方式:在程序運行期間,在程序運行期間,系統(tǒng)系統(tǒng)對變量對變量動動態(tài)態(tài)分配存儲空間分配存儲空間。內(nèi)存中的供用戶使用的存儲空間內(nèi)存中的供用戶使用的存儲空間 &1) 程序區(qū)程序區(qū)(代碼區(qū)代碼區(qū))&2) 靜態(tài)存儲區(qū)靜態(tài)存儲區(qū)&3) 動態(tài)存儲區(qū)動態(tài)存儲區(qū)32存儲類別:數(shù)據(jù)在內(nèi)存中存儲的方法。存儲類別:數(shù)據(jù)在內(nèi)存中存儲的方法。分類分類自動變量自動變量(auto)靜態(tài)變量靜態(tài)變量(static)存放器變量存放器變量(register)外部變量外部變量(extern)4.8 存儲類別存儲類別334.8.1 自動變量自動變量函數(shù)中的函數(shù)中的局部變量局部變量,不用關(guān)鍵字,不用關(guān)鍵字static聲明。聲
19、明。用關(guān)鍵字用關(guān)鍵字auto作顯式聲明。例:作顯式聲明。例:int f(int a) /定義定義f函數(shù),為形參函數(shù),為形參auto int b,c=3; /和為整型自動變量和為整型自動變量關(guān)鍵字關(guān)鍵字auto可省略??墒÷浴?auto int b,c=3; int b,c=3;兩者等價34存放器變量:變量值放在存放器變量:變量值放在CPU存放器中。存放器中。用關(guān)鍵字用關(guān)鍵字register聲明。聲明。注:對編譯系統(tǒng)只是建議性注:對編譯系統(tǒng)只是建議性(非強(qiáng)制性非強(qiáng)制性)的。的。當(dāng)今的編譯系統(tǒng)能夠識別使用頻繁的變量,當(dāng)今的編譯系統(tǒng)能夠識別使用頻繁的變量,自動地將這些變量放在存放器中。自動地將這些變
20、量放在存放器中。4.8.2 用用register聲明存放器變量聲明存放器變量存放器變量的使用可以減少內(nèi)存與存放器變量的使用可以減少內(nèi)存與CPU之間之間的數(shù)據(jù)交換,從而提高程序執(zhí)行的效率。的數(shù)據(jù)交換,從而提高程序執(zhí)行的效率。354.8.3 用用static聲明聲明靜態(tài)靜態(tài)局部變量局部變量在函數(shù)調(diào)用結(jié)束后不消失而保存原值,在下一次在函數(shù)調(diào)用結(jié)束后不消失而保存原值,在下一次該函數(shù)調(diào)用時,該變量保存上一次函數(shù)調(diào)用結(jié)束該函數(shù)調(diào)用時,該變量保存上一次函數(shù)調(diào)用結(jié)束時的值。如:時的值。如:static int x; Objects and variables declared as static retain
21、 their values for the duration of the programs execution. In recursive code, a static object or variable is guaranteed to have the same state in different instances of a block of code.361 靜態(tài)局部變量的值靜態(tài)局部變量的值int f() auto int b=0; static int c=3; b+; c+; return b+c; int main( ) for(int i=0;i3;i+) coutf()
22、 “; 5 6 737對靜態(tài)局部變量的說明對靜態(tài)局部變量的說明(1)存儲在靜態(tài)存儲區(qū)。在程序整個運行期存儲在靜態(tài)存儲區(qū)。在程序整個運行期間都不釋放。而自動變量動態(tài)局部變量間都不釋放。而自動變量動態(tài)局部變量存儲在動態(tài)存儲區(qū),調(diào)用結(jié)束后即釋放。存儲在動態(tài)存儲區(qū),調(diào)用結(jié)束后即釋放。(2) 賦初值在編譯時進(jìn)行,只賦初值一次。賦初值在編譯時進(jìn)行,只賦初值一次。以后每次調(diào)用函數(shù)時不再重新賦初值而保存以后每次調(diào)用函數(shù)時不再重新賦初值而保存上次函數(shù)調(diào)用結(jié)束時的值。而自動變量賦初上次函數(shù)調(diào)用結(jié)束時的值。而自動變量賦初值在函數(shù)調(diào)用時進(jìn)行,每次調(diào)用函數(shù)都重新值在函數(shù)調(diào)用時進(jìn)行,每次調(diào)用函數(shù)都重新賦初值。賦初值。38
23、(3) 假設(shè)在定義局部變量時不賦初值假設(shè)在定義局部變量時不賦初值靜態(tài)局部變量:自動賦初值靜態(tài)局部變量:自動賦初值0或空字符?;蚩兆址?。動態(tài)動態(tài)自動變量:值不確定。自動變量:值不確定。(4) 靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后仍然存在,靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)不能引用它。但其他函數(shù)不能引用它。缺點:長期占內(nèi)存,可讀性差,容易混淆。缺點:長期占內(nèi)存,可讀性差,容易混淆。建議:盡量少用。建議:盡量少用。對局部變量的說明對局部變量的說明391. 在一個文件內(nèi)聲明全局變量在一個文件內(nèi)聲明全局變量有效范圍:從定義處到文件末尾。有效范圍:從定義處到文件末尾。假設(shè)在定義點之前引用該全局變量,
24、那么應(yīng)在引假設(shè)在定義點之前引用該全局變量,那么應(yīng)在引用之前用關(guān)鍵字用之前用關(guān)鍵字extern對該變量作外部變量聲對該變量作外部變量聲明,稱為提前引用聲明。明,稱為提前引用聲明。2. 在多文件的程序中聲明外部變量在多文件的程序中聲明外部變量假設(shè)多個文件中都要用到同一外部變量,不能分假設(shè)多個文件中都要用到同一外部變量,不能分別在多個文件中各自定義一個外部變量。別在多個文件中各自定義一個外部變量。正確做法:在任一文件中定義外部變量,而在其正確做法:在任一文件中定義外部變量,而在其他文件中用他文件中用extern對其作外部變量聲明。對其作外部變量聲明。4.8.3 用用extern聲明外部變量聲明外部變
25、量40/file1.cpp extern int a,b; int a=3,b=4;int main( ) couta,bendl; return 0;4.8.3 用用extern聲明外部變量聲明外部變量用用extern擴(kuò)展全局變量的作用域,雖然能帶擴(kuò)展全局變量的作用域,雖然能帶來方便,但應(yīng)十分慎重來方便,但應(yīng)十分慎重。414.8.4 用用static聲明靜態(tài)外部變量聲明靜態(tài)外部變量作用作用:限制外部變量:限制外部變量只能被本文件引用只能被本文件引用,而不能被其他文件引用。例:而不能被其他文件引用。例:static int a=3; extern int a;int main ( ) int
26、fun (int n) a=a*n; 42靜態(tài)外部變量:加上靜態(tài)外部變量:加上static聲明、只能用于本聲明、只能用于本文件的外部變量全局變量。文件的外部變量全局變量。注:莫認(rèn)為注:莫認(rèn)為static聲明的外部變量才靜態(tài)存儲,聲明的外部變量才靜態(tài)存儲,而不加而不加static的是動態(tài)存儲。實際上,外部變的是動態(tài)存儲。實際上,外部變量都用靜態(tài)存儲方式,只是作用域不同而已。量都用靜態(tài)存儲方式,只是作用域不同而已。4.8.4 用用static聲明靜態(tài)外部變量聲明靜態(tài)外部變量43作用域作用域(Scope):一個名字能被使用的區(qū)域范圍。:一個名字能被使用的區(qū)域范圍。允許同一標(biāo)識符在不同過程中代表不同的
27、名字。允許同一標(biāo)識符在不同過程中代表不同的名字。名字作用域規(guī)那么名字作用域規(guī)那么-最近嵌套原那么最近嵌套原那么一個在子程序一個在子程序B1中說明的名字中說明的名字X只在只在B1中有效局中有效局部于部于B1;如果如果B2是是B1的一個內(nèi)層子程序且的一個內(nèi)層子程序且B2中對中對X沒有新的沒有新的說明,那么原來的名字說明,那么原來的名字X在在B2中仍然有效。如果中仍然有效。如果B2對對X重新作了說明,那么,重新作了說明,那么,B2對對X的任何引用都是指的任何引用都是指重新說明過的這個重新說明過的這個X。 4.9 作用域作用域44局部變量和全局變量局部變量和全局變量局部變量局部變量(local var
28、iable)函數(shù)函數(shù)內(nèi)部定義的變量內(nèi)部定義的變量。只在本函數(shù)范圍內(nèi)有效。只在本函數(shù)范圍內(nèi)有效。復(fù)合語句復(fù)合語句中定義的變量中定義的變量。只在本復(fù)合語句范圍內(nèi)。只在本復(fù)合語句范圍內(nèi)有效。有效。45函數(shù)聲明中的參數(shù)名函數(shù)聲明中的參數(shù)名,作用范圍只在,作用范圍只在本行的本行的括號內(nèi)括號內(nèi)。編譯系統(tǒng)忽略對函數(shù)聲明中的變量編譯系統(tǒng)忽略對函數(shù)聲明中的變量名名。例。例int max(int a,int b); /函數(shù)聲明函數(shù)聲明 int max(int x,int y) /函數(shù)定義函數(shù)定義 coutxyendl; coutabendl; 說明說明/ok/errorint max(int ,int );46全
29、局變量全局變量全局變量全局變量(global variable,全程變量全程變量):在在函數(shù)之函數(shù)之外外定義的變量定義的變量。全局變量的作用域全局變量的作用域:從定義變量的位置開從定義變量的位置開始到始到本本文件結(jié)束文件結(jié)束。全局變量未初始化時,初值為全局變量未初始化時,初值為0值值。用途用途:可以為本文件中其他函數(shù)所共用。:可以為本文件中其他函數(shù)所共用。47int p=1,q=5; float f1(int a) /定義函數(shù)定義函數(shù)f1int b,c;char c1,c2; char f2 (int x, int y)int i,j;main ( ) /主函數(shù)主函數(shù)int m,n;c1、c2
30、的作的作用域用域p、q的作用域的作用域全局變量全局變量48變量的作用域變量的作用域(scope)作用域分類作用域分類&文件作用域文件作用域(file scope)&函數(shù)作用域函數(shù)作用域(function scope)&塊作用域塊作用域(block scope)&函數(shù)原型作用域函數(shù)原型作用域(function prototype scope)注意注意:任何以標(biāo)識符代表的實體都有作用域任何以標(biāo)識符代表的實體都有作用域。49(4) 作用域和存儲期作用域和存儲期前者從前者從空間空間角度,后者角度,后者從從時間時間角度。角度。50(5) static聲明使變量采用靜態(tài)存儲方式。聲明使變量采用靜態(tài)存儲方式
31、。&局部變量局部變量:static使變量由動態(tài)存儲方式改使變量由動態(tài)存儲方式改變?yōu)殪o態(tài)存儲方式。變?yōu)殪o態(tài)存儲方式。&全局變量全局變量:使變量局部化:使變量局部化(局部于本文件局部于本文件),仍為靜態(tài)存儲方式。仍為靜態(tài)存儲方式。變量屬性小結(jié)變量屬性小結(jié)51內(nèi)部函數(shù)內(nèi)部函數(shù):只能被本文件中其他函數(shù)所調(diào)用的函數(shù)只能被本文件中其他函數(shù)所調(diào)用的函數(shù)。又稱又稱靜態(tài)靜態(tài)(static)函數(shù)函數(shù)。一般格式:一般格式:static 類型標(biāo)識符類型標(biāo)識符 函數(shù)名函數(shù)名(形參表形參表)例:例: static int fun(int a,int b)外部函數(shù)外部函數(shù)一般格式:一般格式:extern 類型標(biāo)識符類型標(biāo)識
32、符 函數(shù)名函數(shù)名(形參表形參表)例:例:extern int fun (int a, int b)0 內(nèi)部函數(shù)和外部函數(shù)內(nèi)部函數(shù)和外部函數(shù)522 求兩個整數(shù)中的大者求兩個整數(shù)中的大者/file1.cpp文件文件#include using namespace std;int main( )extern int max(int,int); int a,b; cinab; coutmax(a,b)y?x:y; return z; 7 -34 7531 預(yù)處理命令預(yù)處理命令程序被正常編譯之前執(zhí)行。程序被正常編譯之前執(zhí)行。由由C+統(tǒng)一規(guī)定,但不是統(tǒng)一規(guī)定,但不是C+語言本身的組成語言本身的組成局部,更不是局部,更不是C+語句,不能
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《國際共產(chǎn)主義運動史》2023-2024學(xué)年第一學(xué)期期末試卷
- 合肥師范學(xué)院《創(chuàng)意圖像設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西青年職業(yè)學(xué)院《數(shù)據(jù)庫技術(shù)MySQ》2023-2024學(xué)年第二學(xué)期期末試卷
- 預(yù)防性駕駛與防御性駕駛
- 避險逃生知識競答
- 大學(xué)生商業(yè)計劃創(chuàng)業(yè)
- 預(yù)防天然氣爆炸
- 防霧霾小知識
- 腦積水業(yè)務(wù)學(xué)習(xí)及護(hù)理查房
- 音樂基礎(chǔ)知識講解
- 中央2024年農(nóng)業(yè)農(nóng)村部機(jī)關(guān)服務(wù)局招聘事業(yè)編制工作人員筆試歷年典型考點(頻考版試卷)附帶答案詳解
- 博物館疫情防控方案與參觀人數(shù)控制
- 2024年通訊機(jī)房、設(shè)備安全操作規(guī)程(2篇)
- 四川開放大學(xué)2024年秋《土木工程CAD》形考作業(yè)1-2終考答案
- 形勢與政策總體國家安全觀
- 智能運維知識庫建設(shè)方案設(shè)計與實施規(guī)劃
- 《即時檢驗(POCT)室內(nèi)質(zhì)量控制指南》
- 互聯(lián)網(wǎng)+大學(xué)創(chuàng)新創(chuàng)業(yè)大賽金獎計劃書(完整詳細(xì)版)
- 中國高血壓防治指南(2024年修訂版)要點解讀
- 室外消防管道保溫施工方案
- 《積極心理學(xué)(第3版)》 課件 第3章 積極情緒的價值
評論
0/150
提交評論