版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章第五章 函函 數(shù)數(shù)要點(diǎn):掌握函數(shù)的定義,函數(shù)的原形,函數(shù)的返回值,函數(shù)的調(diào)用,函數(shù)的形式參數(shù)和實(shí)際參數(shù)之間的關(guān)系;掌握函數(shù)重載的使用方法,關(guān)鍵字inline的含義與使用,掌握變量的作用域與生存期,了解函數(shù)的作用域。第五章第五章 函函 數(shù)數(shù)第五章第五章 C+函數(shù)函數(shù) 重點(diǎn)考核的內(nèi)容(知識(shí)點(diǎn)):重點(diǎn)考核的內(nèi)容(知識(shí)點(diǎn)): 1函數(shù)的聲明格式與定義格式。 2函數(shù)調(diào)用表達(dá)式的語(yǔ)法格式及執(zhí)行過程。 3函數(shù)定義中形參變量的作用及實(shí)虛參數(shù)結(jié)合的過程。 5函數(shù)聲明(原型)語(yǔ)句的定義格式及作用。 6形參為一維數(shù)組或二維數(shù)組時(shí)的說明格式、對(duì)應(yīng)實(shí)參的語(yǔ)法規(guī)則、調(diào)用時(shí)數(shù)組參數(shù)傳遞的過程。 7變量的作用域的概念和含
2、義;系統(tǒng)對(duì)全局變量、static變量、局部變量的建立和初始化過程。 第五章第五章 函函 數(shù)數(shù)一般考核的內(nèi)容(知識(shí)點(diǎn)):一般考核的內(nèi)容(知識(shí)點(diǎn)): 1函數(shù)模板(又稱模板函數(shù))的定義格式及其作用。函數(shù)模板的實(shí)例化,函數(shù)模板與一般函數(shù)定義之間的優(yōu)先關(guān)系。 2函數(shù)的遞歸調(diào)用的概念和遞歸函數(shù)的具體執(zhí)行過程 3頭文件在程序文件中的位置和作用。 4函數(shù)聲明或定義中可選參數(shù)的使用,對(duì)應(yīng)的函數(shù)調(diào)用的格式及執(zhí)行過程。 5內(nèi)聯(lián)函數(shù)的定義與作用。 6函數(shù)重載的概念。 l考核要求:考核要求:l 掌握以上重點(diǎn)考核的內(nèi)容,了解其一般考核的內(nèi)容。l 第五章第五章 函函 數(shù)數(shù) 5.1 函數(shù)概述函數(shù)概述1函數(shù):將大的程序分成功能
3、相對(duì)獨(dú)立的小函數(shù):將大的程序分成功能相對(duì)獨(dú)立的小模塊,每一個(gè)模塊稱之為函數(shù)。模塊,每一個(gè)模塊稱之為函數(shù)。 函數(shù)分為用戶定義的函數(shù)和標(biāo)準(zhǔn)庫(kù)函數(shù)兩種。函數(shù)分為用戶定義的函數(shù)和標(biāo)準(zhǔn)庫(kù)函數(shù)兩種。 一個(gè)一個(gè)c+程序由一個(gè)程序由一個(gè)main()函數(shù)和若干用戶定函數(shù)和若干用戶定義的函數(shù)組成。義的函數(shù)組成。第五章第五章 函函 數(shù)數(shù)2. 函數(shù)定義函數(shù)定義 格式:類型格式:類型 函數(shù)名函數(shù)名(參數(shù)表參數(shù)表) 函數(shù)體函數(shù)體 例如:例如:double sqare(double n) return n*n); 第五章第五章 函函 數(shù)數(shù)3函數(shù)類型函數(shù)類型 (1)有參數(shù)、有返回值有參數(shù)、有返回值 例例 int bigger
4、(int a,int b) return (ab)?a:b; 第五章第五章 函函 數(shù)數(shù)(2)有參數(shù)、無(wú)返回值有參數(shù)、無(wú)返回值例例 void delay(long a) for(int i=1;i=a;i+) 第五章第五章 函函 數(shù)數(shù)(3)無(wú)參數(shù)、有返回值無(wú)參數(shù)、有返回值例例 int getx() int x; coutx; return x; 第五章第五章 函函 數(shù)數(shù)(4)無(wú)參數(shù)、無(wú)返回值無(wú)參數(shù)、無(wú)返回值例例 void message() coutthis is a message.n; 第五章第五章 函函 數(shù)數(shù)3. 函數(shù)定義中,若類型省略,默認(rèn)函數(shù)定義中,若類型省略,默認(rèn)為為int,但一般不
5、要省略。但一般不要省略。例例 f(int s) return s+1; 例例 int f(int s) return s+1; 第五章第五章 函函 數(shù)數(shù)5.3 函數(shù)調(diào)用函數(shù)調(diào)用1. 函數(shù)調(diào)用格式與方式。函數(shù)調(diào)用格式與方式。(1)函數(shù)調(diào)用格式:函數(shù)名函數(shù)調(diào)用格式:函數(shù)名(實(shí)參表實(shí)參表)(2)函數(shù)調(diào)用方式函數(shù)調(diào)用方式l作為表達(dá)式的函數(shù)調(diào)用作為表達(dá)式的函數(shù)調(diào)用l作為語(yǔ)句的函數(shù)調(diào)用作為語(yǔ)句的函數(shù)調(diào)用 第五章第五章 函函 數(shù)數(shù)例:例:#include void hi() cout“hi!”endl; double square(double n) return n*n; void main() doub
6、le s=0,i; for(i=1;i=100;i+) s=s+square(i);/作為表達(dá)式的函數(shù)調(diào)用作為表達(dá)式的函數(shù)調(diào)用 hi();/作為語(yǔ)句的函數(shù)調(diào)用作為語(yǔ)句的函數(shù)調(diào)用 cout“1至至100的平方和:的平方和:”s2) return (fib(x-1)+fib(x-2); else return 1; 第五章第五章 函函 數(shù)數(shù)l間接遞歸調(diào)用:函數(shù)間接遞歸調(diào)用:函數(shù)A調(diào)用函數(shù)調(diào)用函數(shù)B,而函數(shù),而函數(shù)B又調(diào)用了又調(diào)用了函數(shù)函數(shù)A。 例例5.2 見書。見書。 第五章第五章 函函 數(shù)數(shù)(4)遞歸的條件遞歸的條件 l須有完成函數(shù)任務(wù)的語(yǔ)句。須有完成函數(shù)任務(wù)的語(yǔ)句。例:例:#include v
7、oid main() if(val1) count(val-1); cout”ok:”val1)。 l 一個(gè)遞歸調(diào)用語(yǔ)句:如上一個(gè)遞歸調(diào)用語(yǔ)句:如上例例count(val-1)。 l先測(cè)試,后遞歸調(diào)用。先測(cè)試,后遞歸調(diào)用。第五章第五章 函函 數(shù)數(shù)例:例:#include void main() count(val-1);/無(wú)窮遞歸,最終??臻g枯竭而出錯(cuò)無(wú)窮遞歸,最終??臻g枯竭而出錯(cuò)if(val1) cout”ok:”valendl; 第五章第五章 函函 數(shù)數(shù)(5)消除遞歸:用非遞歸函數(shù)代替遞歸函數(shù)。消除遞歸:用非遞歸函數(shù)代替遞歸函數(shù)。例:例:long fact(int n) if(n=1) r
8、eturn 1; return fact(n-1)*n; 第五章第五章 函函 數(shù)數(shù)例:例:long fact(int n) long temp=1; for(int i=1; ib) return a; else return b; 第五章第五章 函函 數(shù)數(shù)4. return語(yǔ)句語(yǔ)句 功能:將程序的執(zhí)行返回到函數(shù)調(diào)用處,并將其后表達(dá)式功能:將程序的執(zhí)行返回到函數(shù)調(diào)用處,并將其后表達(dá)式的值作為函數(shù)值返回。的值作為函數(shù)值返回。 (1)return語(yǔ)句后面的括號(hào)是可選的。語(yǔ)句后面的括號(hào)是可選的。例:例:return (3); 等價(jià)等價(jià)與與 return 3; 第五章第五章 函函 數(shù)數(shù)(2)若函數(shù)的返
9、回類型是若函數(shù)的返回類型是void,在函數(shù)體中也可使用,在函數(shù)體中也可使用return語(yǔ)句,但不能有返回值。語(yǔ)句,但不能有返回值。 例:例:void message(int a) if(a10) return; 第五章第五章 函函 數(shù)數(shù) 5. 函數(shù)原型、函數(shù)定義和函數(shù)調(diào)用的關(guān)系函數(shù)原型、函數(shù)定義和函數(shù)調(diào)用的關(guān)系 (1)函數(shù)必須先有原型函數(shù)必須先有原型(或定義或定義)后調(diào)用。后調(diào)用。 (2)函數(shù)定義包含函數(shù)原型。函數(shù)定義包含函數(shù)原型。 (3)若函數(shù)定義于函數(shù)原型之前,則不必給出函數(shù)原型。若函數(shù)定義于函數(shù)原型之前,則不必給出函數(shù)原型。 (4)若函數(shù)定義于函數(shù)原型之后,則必須給出函數(shù)原型。若函數(shù)定義
10、于函數(shù)原型之后,則必須給出函數(shù)原型。第五章第五章 函函 數(shù)數(shù) 例:例:#includedouble max(double,double);/函數(shù)原型函數(shù)原型void main() c=max(a,b);/函數(shù)調(diào)用函數(shù)調(diào)用double max(double x,double y)/函數(shù)定義函數(shù)定義 if(xy) return x; else return y; 例:例:#includedouble max(double x,double y)/函數(shù)定義函數(shù)定義 if(xy) return x; else return y;void main() c=max(a,b);/函數(shù)調(diào)用函數(shù)調(diào)用第五章第五
11、章 函函 數(shù)數(shù)6. 一般,我們不將函數(shù)原型、函數(shù)調(diào)用和函數(shù)定義放在同一一般,我們不將函數(shù)原型、函數(shù)調(diào)用和函數(shù)定義放在同一程序文件,而是分別保存。函數(shù)原型歸入頭文件,函數(shù)定程序文件,而是分別保存。函數(shù)原型歸入頭文件,函數(shù)定義歸入程序文件,函數(shù)調(diào)用歸入主程序文件。從而形成項(xiàng)義歸入程序文件,函數(shù)調(diào)用歸入主程序文件。從而形成項(xiàng)目的多文件結(jié)構(gòu)。目的多文件結(jié)構(gòu)。例:例:/頭文件頭文件area.h double area(double); /程序文件程序文件area.cpp #include”area.h” #define PI 3.14159 double area(double r) return r*
12、r*PI; /主程序文件主程序文件areat.cpp #include”area.h” #include void main() area=area(radius); 第五章第五章 函函 數(shù)數(shù) 7. 一個(gè)一個(gè)c+項(xiàng)目項(xiàng)目(控制臺(tái)應(yīng)用程序控制臺(tái)應(yīng)用程序)的結(jié)構(gòu)。的結(jié)構(gòu)。 主程序文件主程序文件(.cpp)+頭文件頭文件(.h) 程序文件程序文件1(.cpp)+頭文件頭文件(.h) 程序文件程序文件2(.cpp)+頭文件頭文件(.h)項(xiàng)目項(xiàng)目(.prj) 程序文件程序文件n(.cpp)+頭文件頭文件(.h) 第五章第五章 函函 數(shù)數(shù)5.4 函數(shù)調(diào)用中的參數(shù)傳遞。函數(shù)調(diào)用中的參數(shù)傳遞。 5.4.1 傳
13、值方式:形參傳值方式:形參=實(shí)參的值實(shí)參的值例:例:(形參為簡(jiǎn)單變量形參為簡(jiǎn)單變量)#includedouble time2(double n) n=n*2; return n;第五章第五章 函函 數(shù)數(shù)void main() double m=7.0; coutendlm; coutendltime2(m); coutendlm;結(jié)論:當(dāng)形參為普通變量時(shí),結(jié)論:當(dāng)形參為普通變量時(shí),形參和實(shí)參按傳值方式結(jié)合。形參和實(shí)參按傳值方式結(jié)合。n=m的值的值 n*=2;return n;#includedouble time2(double n) n=n*2; return n;第五章第五章 函函 數(shù)數(shù)
14、5.4.2 傳地址方式:形參傳地址方式:形參=實(shí)參的值實(shí)參的值(地址值地址值)例:例:(形參為數(shù)組變量形參為數(shù)組變量)設(shè)計(jì)函數(shù)設(shè)計(jì)函數(shù)sum,它計(jì)算并返回參數(shù)數(shù)組中所有它計(jì)算并返回參數(shù)數(shù)組中所有元素的合計(jì)值。元素的合計(jì)值。 /頭文件頭文件 int sum(int array,int size);第五章第五章 函函 數(shù)數(shù)/程序文件程序文件sum.cpp#include”sum.h”int sum(int array,int size) int s=0; for(int i=0;isize;i+) s+=arrayi; return s;第五章第五章 函函 數(shù)數(shù)/主程序文件主程序文件sumt.cp
15、p#include#include”sum.h”void main() int v1=1,2,3,4,5; coutsum(v1,5)endl; int v2=1,2,3,4,5,6,7,8; coutsum(v2,8)endl;第五章第五章 函函 數(shù)數(shù)sum(v1,5)=結(jié)論:當(dāng)參數(shù)為數(shù)組時(shí),形參和實(shí)參按傳地址方式結(jié)合。結(jié)論:當(dāng)參數(shù)為數(shù)組時(shí),形參和實(shí)參按傳地址方式結(jié)合。例:見書。例:見書。size=5的值的值 /傳值方式傳值方式int s=0;for(int i=0;isize;i+) s+=v1i;/傳地址方式傳地址方式return s;第五章第五章 函函 數(shù)數(shù)5.4.3 默認(rèn)參數(shù)的函數(shù)默
16、認(rèn)參數(shù)的函數(shù)1默認(rèn)參數(shù):函數(shù)的形參表中,若給形參定義了默認(rèn)默認(rèn)參數(shù):函數(shù)的形參表中,若給形參定義了默認(rèn)值,稱此參數(shù)為默認(rèn)參數(shù)。又稱可選參數(shù)。值,稱此參數(shù)為默認(rèn)參數(shù)。又稱可選參數(shù)。 2函數(shù)調(diào)用時(shí),若不給出可選參數(shù)所對(duì)應(yīng)的實(shí)參,則函數(shù)調(diào)用時(shí),若不給出可選參數(shù)所對(duì)應(yīng)的實(shí)參,則實(shí)參取默認(rèn)值。實(shí)參取默認(rèn)值。 第五章第五章 函函 數(shù)數(shù)例:例:int f(int a,char b,char c=z,int d=100);/c、d為默認(rèn)參數(shù)為默認(rèn)參數(shù) f(3,a,b)等價(jià)等價(jià)于于f(3,a,b,100)f(3,a)等價(jià)等價(jià)于于f(3,a,z,100) 第五章第五章 函函 數(shù)數(shù)3可選參數(shù)的聲明可選參數(shù)的聲明 (
17、1)既有函數(shù)原型又有函數(shù)定義時(shí),只能在函數(shù)原型中聲明既有函數(shù)原型又有函數(shù)定義時(shí),只能在函數(shù)原型中聲明可選參數(shù)。函數(shù)定義中不允許聲明可選參數(shù)。可選參數(shù)。函數(shù)定義中不允許聲明可選參數(shù)。(2)只有函數(shù)定義時(shí),可選參數(shù)方可出現(xiàn)在函數(shù)定義中。只有函數(shù)定義時(shí),可選參數(shù)方可出現(xiàn)在函數(shù)定義中。 第五章第五章 函函 數(shù)數(shù)4可選參數(shù)的順序規(guī)定可選參數(shù)的順序規(guī)定 (1)可選參數(shù)必須為形參表中最后且連續(xù)的若干個(gè)參數(shù)。可選參數(shù)必須為形參表中最后且連續(xù)的若干個(gè)參數(shù)。 例:例:void func(int a=1,int b, int c=3,int d=4);/錯(cuò)誤錯(cuò)誤void func(int a,int b=2, in
18、t c=3,int d=4);/正確正確第五章第五章 函函 數(shù)數(shù)(2)調(diào)用具有可選參數(shù)的函數(shù)時(shí),被省略的實(shí)參只能是最后調(diào)用具有可選參數(shù)的函數(shù)時(shí),被省略的實(shí)參只能是最后且連續(xù)的若干個(gè)可選參數(shù)。且連續(xù)的若干個(gè)可選參數(shù)。 例:例:void func(int a,int b=2,int c=3,int d=4); func(10,15,20,30);/正確正確 func();/錯(cuò)誤錯(cuò)誤 func(12,12);/正確正確 func(2,15, ,20);/錯(cuò)誤錯(cuò)誤例:見書。例:見書。 第五章第五章 函函 數(shù)數(shù)5.5 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)(inline function) 1為提高程序的執(zhí)行效率和可讀性,一
19、般將只有為提高程序的執(zhí)行效率和可讀性,一般將只有1至至5行代碼的簡(jiǎn)單函數(shù)聲明為內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)必須在被行代碼的簡(jiǎn)單函數(shù)聲明為內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)必須在被調(diào)用之前聲明或調(diào)用。調(diào)用之前聲明或調(diào)用。例:例:inline int add2(int n) return n+2; 第五章第五章 函函 數(shù)數(shù)2內(nèi)聯(lián)函數(shù)的函數(shù)體限制。內(nèi)聯(lián)函數(shù)的函數(shù)體限制。(1)內(nèi)聯(lián)函數(shù)只適合于只有內(nèi)聯(lián)函數(shù)只適合于只有1至至5行的小函數(shù)。行的小函數(shù)。 (2)遞歸函數(shù)不能用作為內(nèi)聯(lián)函數(shù)。遞歸函數(shù)不能用作為內(nèi)聯(lián)函數(shù)。 (3)內(nèi)聯(lián)函數(shù)體中,不能含有復(fù)雜的結(jié)構(gòu)控制語(yǔ)句。如:內(nèi)聯(lián)函數(shù)體中,不能含有復(fù)雜的結(jié)構(gòu)控制語(yǔ)句。如:switch和和w
20、hile語(yǔ)句等。語(yǔ)句等。 第五章第五章 函函 數(shù)數(shù)5.6 重載函數(shù)重載函數(shù)(function overloading)1函數(shù)重載:即允許定義同名的函數(shù),但重載的函數(shù)函數(shù)重載:即允許定義同名的函數(shù),但重載的函數(shù)必須在形參的數(shù)量或類型上或順序上與其他同名函數(shù)有必須在形參的數(shù)量或類型上或順序上與其他同名函數(shù)有所不同。所不同。 例:例:long add(long a,long b)return a+b; long add(double a,double b)return a+b; 第五章第五章 函函 數(shù)數(shù) 2形式參數(shù):函數(shù)原型或函數(shù)定義中的參數(shù)。簡(jiǎn)稱形參。形式參數(shù):函數(shù)原型或函數(shù)定義中的參數(shù)。簡(jiǎn)稱形參
21、。 實(shí)在參數(shù):函數(shù)調(diào)用中的參數(shù)。簡(jiǎn)稱實(shí)參。實(shí)在參數(shù):函數(shù)調(diào)用中的參數(shù)。簡(jiǎn)稱實(shí)參。 3函數(shù)重載的內(nèi)部實(shí)現(xiàn)方法函數(shù)重載的內(nèi)部實(shí)現(xiàn)方法-名字粉碎名字粉碎(name mangling)名字粉碎:名字粉碎:c+根據(jù)函數(shù)名和參數(shù)信息來生成內(nèi)部函數(shù)根據(jù)函數(shù)名和參數(shù)信息來生成內(nèi)部函數(shù)名的方法。名的方法。 第五章第五章 函函 數(shù)數(shù) 例:例: 重載函數(shù)重載函數(shù) 內(nèi)部函數(shù)名內(nèi)部函數(shù)名 int f(char a); f_c int f(char a,int b,double c); f_cid int f_cid(); f_cidv 第五章第五章 函函 數(shù)數(shù)5可選參數(shù)與函數(shù)重載可選參數(shù)與函數(shù)重載例:例:int f(i
22、nt k,int m=0,double d=0.0); 則函數(shù)調(diào)用則函數(shù)調(diào)用f(3,5,6.7);/正確正確f(3,5);/正確正確f(3);/正確正確 第五章第五章 函函 數(shù)數(shù)但以下函數(shù)均不能重載:但以下函數(shù)均不能重載: int f(int k,int m=0,double d=0.0); int f(int);/f(2)調(diào)用誰(shuí)調(diào)用誰(shuí)?int f(int,int);/f(2,3)調(diào)用誰(shuí)調(diào)用誰(shuí)?int f(int,int,double);/f(2,3,5.0)調(diào)用誰(shuí)調(diào)用誰(shuí)?int f(int,double=0.0);/f(2)調(diào)用誰(shuí)調(diào)用誰(shuí)?結(jié)論:對(duì)有可選參數(shù)的函數(shù),在逐個(gè)去掉可選參數(shù)后形結(jié)論:
23、對(duì)有可選參數(shù)的函數(shù),在逐個(gè)去掉可選參數(shù)后形成的函數(shù)不能重載。成的函數(shù)不能重載。第五章第五章 函函 數(shù)數(shù) 例:例:若有若有int fp(char c,int k=0,double d=100.0);則下列函數(shù)中可以重載的是則下列函數(shù)中可以重載的是( A, D )A. int fp(); B.void fp(char c);C. int fp(char,int); D.void fp(char,int,int); 第五章第五章 函函 數(shù)數(shù)5.7 函數(shù)和變量的作用域函數(shù)和變量的作用域1. 一個(gè)一個(gè)c+項(xiàng)目項(xiàng)目(控制臺(tái)應(yīng)用程序控制臺(tái)應(yīng)用程序)的結(jié)構(gòu)。的結(jié)構(gòu)。 主程序文件主程序文件(.cpp)+頭文件頭
24、文件(.h) 程序文件程序文件1(.cpp)+頭文件頭文件(.h) 程序文件程序文件2(.cpp)+頭文件頭文件(.h)項(xiàng)目項(xiàng)目(.prj) 程序文件程序文件n(.cpp)+頭文件頭文件(.h) 第五章第五章 函函 數(shù)數(shù) 2. 幾個(gè)概念幾個(gè)概念 l 跨文件作用域:不僅在定義它的程序文件中有作用,跨文件作用域:不僅在定義它的程序文件中有作用,在同一項(xiàng)目的其它程序文件中也有作用。又稱全局作用在同一項(xiàng)目的其它程序文件中也有作用。又稱全局作用域。域。l 文件作用域:僅在定義它的程序文件中有作用。文件作用域:僅在定義它的程序文件中有作用。l 局部作用域:僅在定義它的函數(shù)或塊中有作用。局部作用域:僅在定義
25、它的函數(shù)或塊中有作用。 第五章第五章 函函 數(shù)數(shù)l 靜態(tài)生命期:整個(gè)應(yīng)用程序運(yùn)行期間不會(huì)靜態(tài)生命期:整個(gè)應(yīng)用程序運(yùn)行期間不會(huì)消失消失(死亡死亡)。l 局部生命期:在定義它的函數(shù)或塊運(yùn)行結(jié)局部生命期:在定義它的函數(shù)或塊運(yùn)行結(jié)束立即消失束立即消失(死亡死亡)。又稱自動(dòng)生命期。又稱自動(dòng)生命期。 第五章第五章 函函 數(shù)數(shù) 3. 結(jié)論結(jié)論第五章第五章 函函 數(shù)數(shù) 5.7.2 變量的作用域和生存期變量的作用域和生存期 1 全局變量全局變量 例例1(無(wú)修飾的全局變量無(wú)修飾的全局變量)/ch61.prjch61.cppch611.cpp /ch61.cpp#includevoid fn1();void fn2
26、();int n; /全局變量全局變量void main() n=3; fn1(); coutnendl;void fn1()fn2();/ch611.cppextern int n; /n是另一程序文件中定是另一程序文件中定義的全局變量義的全局變量void fn2() n=8;結(jié)果:結(jié)果:8第五章第五章 函函 數(shù)數(shù)例例2(static修飾的全局變量修飾的全局變量)/ch62.prjch62.cppch621.cpp /ch62.cpp#includevoid fn();int n; /全局變量全局變量void main() n=20; coutnendl; fn();/ch621.cppst
27、atic int n; /默認(rèn)初始化為默認(rèn)初始化為0void fn() n+; coutnendl;結(jié)果:結(jié)果:201若將若將static改成改成extern,則,則結(jié)果:結(jié)果:2021第五章第五章 函函 數(shù)數(shù)6局部變量局部變量例例1(無(wú)修飾的局部變量無(wú)修飾的局部變量) #include void main() int x=5,y=1; /局部變量局部變量coutx1=x,y=yendl; int x=3; /局部變量局部變量 coutx2=x,y=yendl; coutx3=x,y=yendl; 結(jié)果結(jié)果:x1=5,y=1 x2=3,y=1 x3=5,y=1 第五章第五章 函函 數(shù)數(shù)例例2(
28、無(wú)修飾的局部變量無(wú)修飾的局部變量) #include void main() void increament(); increament(); increament(); increament(); void increament() int i=0; /局部變量局部變量 i+; couti,; 結(jié)果:結(jié)果:1,1,1 第五章第五章 函函 數(shù)數(shù)例例3(static修飾的局部變量修飾的局部變量) #include void main() void increment(); increament(); increament(); increament(); void increment() sta
29、tic int i; /static修飾的局部變量修飾的局部變量 i+; coutix,; 結(jié)果:結(jié)果:1,2,3 第五章第五章 函函 數(shù)數(shù)例例4(綜合舉例綜合舉例) #include void func(); int n=1;/全局變量全局變量 void main() static int a;/靜態(tài)局部變量靜態(tài)局部變量 int b=-10; func();couta:ab:bn:nendl; b+=4; couta:ab:bn:nendl; n+=10; func(); void func() static int a=2; /靜態(tài)局部變量靜態(tài)局部變量 int b=5;/局部變量局部變量
30、a+=2; n+=12; b+=5; couta:ab:bn:nendl; 結(jié)果:結(jié)果:a:0 b:-10 n:1a:4 b:10 n:13a:0 b:-6 n:13a:6 b:10 n:35第五章第五章 函函 數(shù)數(shù)5.7.1 函數(shù)的作用域函數(shù)的作用域 1函數(shù)原型或函數(shù)定義時(shí),若加上函數(shù)原型或函數(shù)定義時(shí),若加上extern修飾或無(wú)任修飾或無(wú)任何修飾時(shí),具有跨文件作用域。何修飾時(shí),具有跨文件作用域。 2函數(shù)原型或函數(shù)定義時(shí),若用函數(shù)原型或函數(shù)定義時(shí),若用static修飾,稱為靜態(tài)修飾,稱為靜態(tài)函數(shù),具有文件作用域。函數(shù),具有文件作用域。 3函數(shù)均具有靜態(tài)生存期。函數(shù)均具有靜態(tài)生存期。 第五章第五
31、章 函函 數(shù)數(shù)例:例:/file1.cpp void fn(); void fn1(); void main() fn(); fn1(); /file2.cpp #include void fn(); static void fn1();/文件作用域文件作用域 void fn() void fn1() 說明:說明:fn1()具有文件作用域,即只在具有文件作用域,即只在file2.cpp中有作用,中有作用,file1.cpp中調(diào)中調(diào)用用fn1(),會(huì)產(chǎn)生錯(cuò)誤。會(huì)產(chǎn)生錯(cuò)誤。 第五章第五章 函函 數(shù)數(shù)5.8 函數(shù)模板函數(shù)模板(function template)1.函數(shù)模板:一系列相關(guān)函數(shù)定義的模型
32、或樣板。函數(shù)模板:一系列相關(guān)函數(shù)定義的模型或樣板。這些函數(shù)的代碼除了因數(shù)據(jù)類型不同而有所差這些函數(shù)的代碼除了因數(shù)據(jù)類型不同而有所差異外,其結(jié)構(gòu)基本相同。函數(shù)模板可歸入頭文異外,其結(jié)構(gòu)基本相同。函數(shù)模板可歸入頭文件。件。第五章第五章 函函 數(shù)數(shù)例:對(duì)函數(shù)例:對(duì)函數(shù)max(x,y) int max(int a,int b)return (ab)?a:b; long max(long a,long b)return (ab)?a:b; float max(float a,float b)return (ab)?a:b; double max(double a,double b)return (ab)?a:b; 可定義一個(gè)樣板??啥x一個(gè)樣板。第五章第五章 函函 數(shù)數(shù)2. 格式:格式:template函數(shù)定義函數(shù)定義例例
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年云南建筑安全員C證考試(專職安全員)題庫(kù)附答案
- 2025湖南省安全員-C證考試(專職安全員)題庫(kù)附答案
- 2025年湖北省安全員B證考試題庫(kù)及答案
- 2025江蘇省安全員A證考試題庫(kù)及答案
- 貴陽(yáng)信息科技學(xué)院《環(huán)境工程CAD技術(shù)應(yīng)用實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025安徽省安全員《C證》考試題庫(kù)及答案
- 廣州幼兒師范高等??茖W(xué)校《家用電器設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年安徽省安全員知識(shí)題庫(kù)附答案
- 《d分析方法》課件
- 補(bǔ)條件和問題課件
- 金庸群俠傳x最完整攻略(實(shí)用排版)
- SH/T 0356-1996燃料油
- GB/T 36324-2018信息安全技術(shù)工業(yè)控制系統(tǒng)信息安全分級(jí)規(guī)范
- 《水銀花開的夜晚》 參考答案
- 儀表施工交流-儀表安裝通病及分析與防治課件
- 網(wǎng)絡(luò)管理與維護(hù)課件
- 化妝品不良反應(yīng)監(jiān)測(cè)培訓(xùn)課件
- 中建項(xiàng)目實(shí)施策劃書編制指南(附表)
- 設(shè)備運(yùn)行售后故障響應(yīng)方案
- 亞馬遜品牌授權(quán)書(英文模板)
評(píng)論
0/150
提交評(píng)論