版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院1信息技術(shù)學(xué)院信息技術(shù)學(xué)院 張蕾張蕾c+面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院2 課時(shí):課時(shí):7272(3333理論理論6 6指導(dǎo)性自學(xué)指導(dǎo)性自學(xué)3333實(shí)驗(yàn))實(shí)驗(yàn)) 所授章節(jié):所授章節(jié):1-81-8 主講教師:主講教師:張蕾(張蕾() 時(shí)間分配:時(shí)間分配:理論(第理論(第1 1周周一周周一1313節(jié)、節(jié)、 112112周周三周周三1313節(jié))節(jié))實(shí)驗(yàn)(實(shí)驗(yàn)(212212周周一周周一1313節(jié))節(jié)) 實(shí)驗(yàn)機(jī)房:實(shí)驗(yàn)機(jī)房:b6305b63052021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院3第一章第一章 c+的初步知識
2、的初步知識 第二章第二章 類和對象類和對象 第三章第三章 關(guān)于類和對象的進(jìn)一步討論關(guān)于類和對象的進(jìn)一步討論第四章第四章 運(yùn)算符重載運(yùn)算符重載 第五章第五章 繼承與派生繼承與派生 第六章第六章 多態(tài)性與虛函數(shù)多態(tài)性與虛函數(shù) 第七章第七章 輸入輸出流輸入輸出流 結(jié)束放映結(jié)束放映2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院4第一章第一章 c+的初步知識的初步知識 1.1 從從c到到c+ 1.2 c+語言的詞法和詞法規(guī)則語言的詞法和詞法規(guī)則 1.3 最簡單的最簡單的c+程序程序 1.4 c+對對c的擴(kuò)充的擴(kuò)充 1.5 c+程序的編寫和實(shí)現(xiàn)程序的編寫和實(shí)現(xiàn)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院51
3、.1 從從c到到c+c語言是結(jié)構(gòu)化和模塊化的語言,語言是結(jié)構(gòu)化和模塊化的語言,c程序的設(shè)計(jì)程序的設(shè)計(jì)者必須細(xì)致地設(shè)計(jì)程序中的每個(gè)細(xì)節(jié),準(zhǔn)確地考慮者必須細(xì)致地設(shè)計(jì)程序中的每個(gè)細(xì)節(jié),準(zhǔn)確地考慮程序運(yùn)行時(shí)每一時(shí)刻發(fā)生的事情,當(dāng)程序規(guī)模變大程序運(yùn)行時(shí)每一時(shí)刻發(fā)生的事情,當(dāng)程序規(guī)模變大時(shí),結(jié)構(gòu)化程序設(shè)計(jì)就顯得力不從心。時(shí),結(jié)構(gòu)化程序設(shè)計(jì)就顯得力不從心。 為了解決軟件設(shè)計(jì)危機(jī),在為了解決軟件設(shè)計(jì)危機(jī),在20世紀(jì)世紀(jì)80年代提出年代提出了面向?qū)ο蟮某绦蛟O(shè)計(jì)思想(了面向?qū)ο蟮某绦蛟O(shè)計(jì)思想(oop)在實(shí)踐中人們)在實(shí)踐中人們發(fā)現(xiàn)發(fā)現(xiàn)c語言使用如此廣泛,如果在它的基礎(chǔ)上發(fā)展語言使用如此廣泛,如果在它的基礎(chǔ)上發(fā)展一
4、種面向?qū)ο蟮恼Z言,一定會(huì)讓大眾容易接收這種一種面向?qū)ο蟮恼Z言,一定會(huì)讓大眾容易接收這種語言,所以產(chǎn)生了語言,所以產(chǎn)生了c+。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院6 at&t發(fā)布的第一個(gè)發(fā)布的第一個(gè)c+編譯系統(tǒng)是一個(gè)預(yù)編譯器,編譯系統(tǒng)是一個(gè)預(yù)編譯器,它把它把c+代碼轉(zhuǎn)換成代碼轉(zhuǎn)換成c代碼,然后再用代碼,然后再用c編譯系統(tǒng)編譯系統(tǒng)生成目標(biāo)代碼。生成目標(biāo)代碼。 1988年年 產(chǎn)生第一個(gè)產(chǎn)生第一個(gè)c+編譯系統(tǒng)編譯系統(tǒng) 1989年年 c+2.0 增加類的多重繼承增加類的多重繼承 1991年年 c+3.0 增加類的模板增加類的模板 c+4.0 增加異常處理、命名空間增加異常處理、命名空間
5、1997年年 ansi發(fā)布發(fā)布c+標(biāo)準(zhǔn)標(biāo)準(zhǔn)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院7c+既可以用于既可以用于面向過程面向過程的結(jié)構(gòu)化程序設(shè)計(jì),也的結(jié)構(gòu)化程序設(shè)計(jì),也可用于可用于面向?qū)ο竺嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)。的程序設(shè)計(jì)。c+對對c的增強(qiáng)體現(xiàn)在兩個(gè)方面:的增強(qiáng)體現(xiàn)在兩個(gè)方面:1.對原來的面向過程機(jī)制做了擴(kuò)充。對原來的面向過程機(jī)制做了擴(kuò)充。2.增加了面向?qū)ο蟮臋C(jī)制。增加了面向?qū)ο蟮臋C(jī)制。學(xué)習(xí)學(xué)習(xí)c+之后,既可以進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì),之后,既可以進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì),也可以進(jìn)行面向過程的程序設(shè)計(jì)。也可以進(jìn)行面向過程的程序設(shè)計(jì)。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院81.2 c+語言的詞法和
6、詞法規(guī)則語言的詞法和詞法規(guī)則c+語言的字符集語言的字符集 等同于等同于c語言的字符集,包括:(語言的字符集,包括:(1)大小寫英)大小寫英文字母(文字母(2)數(shù)字字符()數(shù)字字符(3)其他)其他ascii碼字符碼字符(除除、$外外) 。單詞及詞法規(guī)則單詞及詞法規(guī)則 單詞是構(gòu)成語句的關(guān)鍵成份之一,通常由若干單詞是構(gòu)成語句的關(guān)鍵成份之一,通常由若干字符組成,字符組成,c+有幾種單詞:有幾種單詞:1.關(guān)鍵字關(guān)鍵字 2.標(biāo)識符標(biāo)識符 3.運(yùn)算符運(yùn)算符 4.分隔符分隔符 5.注釋符。注釋符。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院9關(guān)鍵字關(guān)鍵字 是是c+語言中的命令字,它是預(yù)定義好的單詞,語言中的命
7、令字,它是預(yù)定義好的單詞,c+編譯程序?qū)ζ溆袑iT的解釋。編譯程序?qū)ζ溆袑iT的解釋。 如如int、float、if、else、while、switch等等。等等。標(biāo)識符標(biāo)識符 程序員用標(biāo)識符對程序中元素實(shí)施命名,包括函數(shù)名、程序員用標(biāo)識符對程序中元素實(shí)施命名,包括函數(shù)名、類名、對象名、類型名、變量名、常變量名、數(shù)組名等。類名、對象名、類型名、變量名、常變量名、數(shù)組名等。 標(biāo)識符以字母或下劃線開始,后跟字母、數(shù)字、下劃標(biāo)識符以字母或下劃線開始,后跟字母、數(shù)字、下劃線,線,標(biāo)識符區(qū)分大小寫字母標(biāo)識符區(qū)分大小寫字母。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院10運(yùn)算符運(yùn)算符 運(yùn)算符代表某種操作的單詞
8、,由一個(gè)或多個(gè)字運(yùn)算符代表某種操作的單詞,由一個(gè)或多個(gè)字符組成。符組成。 注意運(yùn)算符的優(yōu)先級和結(jié)合順序。參考本書附注意運(yùn)算符的優(yōu)先級和結(jié)合順序。參考本書附錄錄b(p287)。)。分隔符分隔符 在語句中關(guān)鍵字和標(biāo)識符之間、各個(gè)語句之間在語句中關(guān)鍵字和標(biāo)識符之間、各個(gè)語句之間要用分隔符分開。要用分隔符分開。c+常用的分隔符有空格、逗常用的分隔符有空格、逗號、分號、冒號、大括號。號、分號、冒號、大括號。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院11注釋符注釋符c+提供了兩種注釋符。提供了兩種注釋符。/ * 注釋注釋* / 注釋注釋2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院121.3 最簡單的最簡
9、單的c+程序程序 例例1.1輸出一行字符輸出一行字符“this is a c+ program.”。#include / 用用cout輸出時(shí)需要用輸出時(shí)需要用 / 此頭文件此頭文件using namespace std; / 使用命名空間使用命名空間stdint main() coutthis is a c+ program.n; / 上面用上面用c+的方法輸出一行的方法輸出一行 return 0;2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院13(1)標(biāo)準(zhǔn)標(biāo)準(zhǔn)c+規(guī)定規(guī)定main函數(shù)必須聲明為函數(shù)必須聲明為int類型,類型,如果程序正常運(yùn)行,向操作系統(tǒng)返回一個(gè)零值,如果程序正常運(yùn)行,向操作系統(tǒng)
10、返回一個(gè)零值,否則返回非零值,通常是否則返回非零值,通常是-1。(2)c+程序中可以用程序中可以用/*/做注釋,可以用做注釋,可以用/做注做注釋。前者可以做多行注釋,后者只做單行注釋。釋。前者可以做多行注釋,后者只做單行注釋。(3)c+程序中常用程序中常用cout、cin進(jìn)行輸出輸入,進(jìn)行輸出輸入,cout是是c+定義的定義的輸出流對象輸出流對象,是是插入運(yùn)算符插入運(yùn)算符。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院14 (4)使用使用cout、cin需要用頭文件需要用頭文件iostream,在程,在程序開始要用序開始要用#include聲明包含的頭文件。聲明包含的頭文件。 (5) using
11、 namespace std; 意思是使用命名空間。意思是使用命名空間。c+標(biāo)準(zhǔn)庫中的類和函數(shù)是在命名空間標(biāo)準(zhǔn)庫中的類和函數(shù)是在命名空間std中聲明中聲明的,因此程序中如用的,因此程序中如用c+標(biāo)準(zhǔn)庫中的有關(guān)內(nèi)容標(biāo)準(zhǔn)庫中的有關(guān)內(nèi)容(此時(shí)需要用(此時(shí)需要用#include命令行),就要用命令行),就要用using namespace std; 語句聲明。語句聲明。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院15例例1.2 求求a和和b 兩個(gè)數(shù)之和兩個(gè)數(shù)之和 / 求兩數(shù)之和求兩數(shù)之和 #include / 預(yù)處理命令 using namespace std; / 使用命名空間std int mai
12、n() / 主函數(shù)首部 / 函數(shù)體開始 int a,b,sum; / 定義變量 cinab; / 輸入語句 sum=a+b; / 賦值語句 couta+b=sum”是是提取運(yùn)算提取運(yùn)算符符,與,與cin配合,其作用是從輸入設(shè)備中提取數(shù)據(jù)配合,其作用是從輸入設(shè)備中提取數(shù)據(jù)送到輸入流送到輸入流cin中。在程序執(zhí)行時(shí),鍵盤輸入的第中。在程序執(zhí)行時(shí),鍵盤輸入的第一個(gè)數(shù)據(jù)賦予一個(gè)數(shù)據(jù)賦予a,第二個(gè)數(shù)據(jù)賦予,第二個(gè)數(shù)據(jù)賦予b 。 cout語句中的語句中的endl是是c+控制符常數(shù),作用是讓控制符常數(shù),作用是讓光標(biāo)換行。光標(biāo)換行。 如果在本程序運(yùn)行時(shí)輸入:如果在本程序運(yùn)行時(shí)輸入: 123 456 程序則輸出
13、:程序則輸出: a+b = 5792021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院17 例例1.3 求兩個(gè)數(shù)中的大數(shù)求兩個(gè)數(shù)中的大數(shù) #include using namespace std; int main() int max(int x,int y) ; /對max函數(shù)作聲明 int a,b,c; cinab; c=max(a,b); /調(diào)用max函數(shù) coutmax=cy) z=x; else z=y; return (z); 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院19 本程序包含兩個(gè)函數(shù):本程序包含兩個(gè)函數(shù):主函數(shù)主函數(shù)main和和被調(diào)用的函數(shù)被調(diào)用的函數(shù)maxmax函數(shù)的作用是將
14、兩個(gè)整數(shù)中的大數(shù)賦予函數(shù)的作用是將兩個(gè)整數(shù)中的大數(shù)賦予變量變量z。return語句將語句將z的值返回給主函數(shù)的值返回給主函數(shù)main。返回值是通過函數(shù)名返回值是通過函數(shù)名max帶回到帶回到main函數(shù)的調(diào)用函數(shù)的調(diào)用處。處。 程序運(yùn)行情況如下:程序運(yùn)行情況如下: 18 25 (輸入輸入18和和25) max = 25 (輸出最大值輸出最大值25)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院20 例例1.3 程序的另一種格式程序的另一種格式 #include using namespace std; int main() int max(int x,int y) /定義max函數(shù) int z;
15、if(xy) z=x; else z=y; return (z); int a,b,c; cinab; c=max(a,b); /調(diào)用max函數(shù) coutmax=cendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院21例例1.4包含類的包含類的c+程序程序#include using namespace std;class student / 聲明一個(gè)類,類名為student private: / 以下為類中的私有部分 int num; / 私有變量num int score; / 私有變量score public: / 以下為類中公用部分 void setdata(
16、) / 定義公用函數(shù)setdata cinnum; / 輸入num的值 cinscore; / 輸入score的值 void display() / 定義公用函數(shù)display coutnum=numendl; / 輸出num的值 coutscore=scoreendl; ; / 輸出score的值; / 類的聲明結(jié)束2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院22 student stud1,stud2; /定義stud1和stud2為student類的變量,稱為對象 int main() / 主函數(shù)首部 stud1.setdata(); / 調(diào)用對象stud1的setdata函數(shù) stud
17、2.setdata(); / 調(diào)用對象stud2的setdata函數(shù) stud1.display(); / 調(diào)用對象stud1的display函數(shù) stud2.display(); / 調(diào)用對象stud1的display函數(shù) return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院23 程序中聲明一個(gè)被稱為程序中聲明一個(gè)被稱為類類的類型的類型student。聲明。聲明時(shí)要用關(guān)鍵字時(shí)要用關(guān)鍵字class。c+類中可以包含兩種成員類中可以包含兩種成員即數(shù)據(jù)即數(shù)據(jù)(如變量如變量num、 score)和函數(shù)和函數(shù)(如如setdata函函數(shù)和數(shù)和 display函數(shù)函數(shù))。分別稱為。分別稱為數(shù)據(jù)
18、成員數(shù)據(jù)成員和和成員函成員函數(shù)數(shù)。 在在c+ 中將一組數(shù)據(jù)和訪問這組數(shù)據(jù)的函數(shù)封裝中將一組數(shù)據(jù)和訪問這組數(shù)據(jù)的函數(shù)封裝在一起,組成類。一個(gè)類是由一組數(shù)據(jù),一組對在一起,組成類。一個(gè)類是由一組數(shù)據(jù),一組對其訪問的若干函數(shù),以及數(shù)據(jù)和函數(shù)的訪問屬性其訪問的若干函數(shù),以及數(shù)據(jù)和函數(shù)的訪問屬性組成的。在前面程序中看到的組成的。在前面程序中看到的private (私有)(私有) public(公有)保留字代表數(shù)據(jù)和函數(shù)的訪問屬(公有)保留字代表數(shù)據(jù)和函數(shù)的訪問屬性。性。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院24 凡是指定為公有的數(shù)據(jù)和函數(shù),既可由本類的函凡是指定為公有的數(shù)據(jù)和函數(shù),既可由本類的函數(shù)
19、訪問和調(diào)用,也可由其他函數(shù)或語句訪問和調(diào)數(shù)訪問和調(diào)用,也可由其他函數(shù)或語句訪問和調(diào)用;凡是指定為私有的數(shù)據(jù)和函數(shù),通常只能由用;凡是指定為私有的數(shù)據(jù)和函數(shù),通常只能由本類的函數(shù)訪問和調(diào)用。本類的函數(shù)訪問和調(diào)用。 程序中程序中“student stud1,stud2; ”是一個(gè)定義語是一個(gè)定義語句,定義兩個(gè)句,定義兩個(gè)student 類型變量類型變量stud1和和stud2, student 類與類與int一樣是一樣是c+的合法類型。的合法類型。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院25 具有類類型的變量稱為具有類類型的變量稱為對象對象。 student的對象的對象stud1,stud2具
20、有同樣的結(jié)構(gòu)和特征。具有同樣的結(jié)構(gòu)和特征。 在類外調(diào)用成員函數(shù)時(shí)必須在函數(shù)名前冠以類的在類外調(diào)用成員函數(shù)時(shí)必須在函數(shù)名前冠以類的名稱。名稱。 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院26 主函數(shù)中第一條語句輸入學(xué)生主函數(shù)中第一條語句輸入學(xué)生1的學(xué)號和成績,第二條語的學(xué)號和成績,第二條語句輸入學(xué)生句輸入學(xué)生2的學(xué)號和成績,第三條語句輸出學(xué)生的學(xué)號和成績,第三條語句輸出學(xué)生1的學(xué)號的學(xué)號和成績,第四條語句輸出學(xué)生和成績,第四條語句輸出學(xué)生2的學(xué)號和成績。程序運(yùn)行的學(xué)號和成績。程序運(yùn)行情況如下:情況如下: 1001 98.5 1002 76.5 num=1001 score=98.5 num=1
21、002 score=76.52021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院27 為了與為了與c兼容,兼容, c+保留了保留了c語言中的一些規(guī)定,語言中的一些規(guī)定,例如頭文件的文件名,以例如頭文件的文件名,以c語言里頭文件的擴(kuò)展語言里頭文件的擴(kuò)展名是名是 .h,許多,許多c+編譯系統(tǒng)保留了這種擴(kuò)展名,編譯系統(tǒng)保留了這種擴(kuò)展名,近年推出的近年推出的c+編譯系統(tǒng)新版本,推出了一批不編譯系統(tǒng)新版本,推出了一批不帶擴(kuò)展名的頭文件如帶擴(kuò)展名的頭文件如iostream,string ,cmath 等。為了兼容等。為了兼容c+仍允許使用帶擴(kuò)展名的頭文件。仍允許使用帶擴(kuò)展名的頭文件。由于由于c語言無命名空間,因此
22、使用帶擴(kuò)展名的頭語言無命名空間,因此使用帶擴(kuò)展名的頭文件時(shí)不用文件時(shí)不用using namespace std。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院281.4 c+對c的擴(kuò)充 c+既可用于面向過程的程序設(shè)計(jì),也可既可用于面向過程的程序設(shè)計(jì),也可用于面向?qū)ο蟪绦蛟O(shè)計(jì)。用于面向?qū)ο蟪绦蛟O(shè)計(jì)。c+繼承了繼承了c語言語言提供的絕大部分功能和語法規(guī)定,并在此提供的絕大部分功能和語法規(guī)定,并在此基礎(chǔ)上作了擴(kuò)充?;A(chǔ)上作了擴(kuò)充。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院29 1.4.1 c+的輸入和輸出的輸入和輸出 1.4.2 用用const 定義常變量定義常變量 1.4.3 函數(shù)原型聲明函數(shù)原型
23、聲明 1.4.4 函數(shù)的重載函數(shù)的重載 1.4.5 函數(shù)模板函數(shù)模板 1.4.6 有默認(rèn)參數(shù)的函數(shù)有默認(rèn)參數(shù)的函數(shù)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院30 1.4.7 變量的引用變量的引用 1.4.8 內(nèi)置函數(shù)內(nèi)置函數(shù) 1.4.9 作用域運(yùn)算符作用域運(yùn)算符 1.4.10 字符串變量字符串變量 1.4.11 動(dòng)態(tài)分配動(dòng)態(tài)分配/回收內(nèi)存運(yùn)算符回收內(nèi)存運(yùn)算符2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院311.4.1 c+的輸入輸出的輸入輸出 c+為了方便使用,除了可以利用為了方便使用,除了可以利用printf和和scanf函數(shù)進(jìn)行輸入和輸出外,還增加了標(biāo)準(zhǔn)輸入流輸函數(shù)進(jìn)行輸入和輸出外,還增加
24、了標(biāo)準(zhǔn)輸入流輸出流出流cin和和cout。它們是在頭文件。它們是在頭文件iostream中定中定義的,標(biāo)準(zhǔn)流是不需要打開文件和關(guān)閉文件就能義的,標(biāo)準(zhǔn)流是不需要打開文件和關(guān)閉文件就能直接操作的流式文件,在此標(biāo)準(zhǔn)輸入流是指從鍵直接操作的流式文件,在此標(biāo)準(zhǔn)輸入流是指從鍵盤上輸入的數(shù)據(jù),標(biāo)準(zhǔn)輸出流是指向屏幕輸出的盤上輸入的數(shù)據(jù),標(biāo)準(zhǔn)輸出流是指向屏幕輸出的數(shù)據(jù)流。數(shù)據(jù)流。c+預(yù)定義的標(biāo)準(zhǔn)流如表預(yù)定義的標(biāo)準(zhǔn)流如表1.2所示。所示。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院322021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院331. 用用cout進(jìn)行輸出進(jìn)行輸出 格式:格式: cout 表達(dá)式表達(dá)式1表達(dá)式表
25、達(dá)式2 功能:由左向右逐個(gè)計(jì)算表達(dá)式的值,將其插入功能:由左向右逐個(gè)計(jì)算表達(dá)式的值,將其插入到輸出流到輸出流cout中。中。 cout 必須與輸出運(yùn)算符必須與輸出運(yùn)算符一起使用,每個(gè)一起使用,每個(gè)后后跟一個(gè)表達(dá)式,跟一個(gè)表達(dá)式,運(yùn)算符的結(jié)合方向是從左向右,運(yùn)算符的結(jié)合方向是從左向右,所以各個(gè)表達(dá)式的值按從左到右的順序插入到輸所以各個(gè)表達(dá)式的值按從左到右的順序插入到輸出流中。出流中。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院34 for ( k = 1; k =3; k+) cout “k=“ kendl; endl是是c+輸出流的常數(shù),在頭文件輸出流的常數(shù),在頭文件iostream中中定義,
26、代表讓光標(biāo)換行。在定義,代表讓光標(biāo)換行。在c+中也可以用中也可以用”n”控制光標(biāo)換行。所以輸出語句也可寫成:控制光標(biāo)換行。所以輸出語句也可寫成: cout “k=“ k變量變量1 變量變量2 是是c+的提取運(yùn)算符,表示從標(biāo)準(zhǔn)輸入設(shè)備取的提取運(yùn)算符,表示從標(biāo)準(zhǔn)輸入設(shè)備取得數(shù)據(jù),賦予其后的變量。得數(shù)據(jù),賦予其后的變量。 從鍵盤輸入數(shù)值數(shù)據(jù)時(shí),兩個(gè)數(shù)據(jù)之間用空格分從鍵盤輸入數(shù)值數(shù)據(jù)時(shí),兩個(gè)數(shù)據(jù)之間用空格分隔或用回車分隔。隔或用回車分隔。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院36 int a; float b cinab; 從鍵盤輸入從鍵盤輸入 20 32.45 2021-11-3南京中醫(yī)藥大學(xué)
27、信息技術(shù)學(xué)院37例例1.5 cin和和cout的使用的使用 #include using namespace std; int main( ) coutplease enter your name and age:name; cinage; coutyour name is nameendl; coutyour age is ageendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院381.4.2 用用const定義常變量定義常變量 格式:格式: const 類型類型 變量名變量名 = 常數(shù)常數(shù); 例:例:const float pi= 3.14159;2021-11-
28、3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院391.4.3 函數(shù)原型聲明函數(shù)原型聲明 c+規(guī)定,如果函數(shù)調(diào)用在函數(shù)定義之前,要求規(guī)定,如果函數(shù)調(diào)用在函數(shù)定義之前,要求在調(diào)用之前聲明該函數(shù)的原型。在調(diào)用之前聲明該函數(shù)的原型。 格式:格式:函數(shù)類型函數(shù)類型 函數(shù)名(形參表)函數(shù)名(形參表); 形參表中形參可以只寫類型。形參表中形參可以只寫類型。 例:例: int max ( int x , int y ); 或或 int max( int , int ); 其實(shí)其實(shí)c+編譯時(shí),只檢查參數(shù)的數(shù)據(jù)類型。編譯時(shí),只檢查參數(shù)的數(shù)據(jù)類型。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院401.4.4 函數(shù)的重載函數(shù)的重載 c+
29、允許在同一個(gè)域中用一個(gè)函數(shù)名定義允許在同一個(gè)域中用一個(gè)函數(shù)名定義多個(gè)函數(shù),這些函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類多個(gè)函數(shù),這些函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類型不相同。型不相同。用一個(gè)函數(shù)名實(shí)現(xiàn)不同的功能,用一個(gè)函數(shù)名實(shí)現(xiàn)不同的功能,就是函數(shù)的重載就是函數(shù)的重載。 例例1.6 設(shè)計(jì)程序計(jì)算三個(gè)數(shù)中的大數(shù)設(shè)計(jì)程序計(jì)算三個(gè)數(shù)中的大數(shù)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院41 #include using namespace std; int max(int a,int b,int c) /求求3個(gè)整數(shù)中的最大者個(gè)整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; float m
30、ax(float a,float b, float c) /求求3個(gè)實(shí)數(shù)中的最大者個(gè)實(shí)數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; long max(long a,long b,long c) /求求3個(gè)長整數(shù)中的最大者個(gè)長整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院42 int main( ) int a,b,c; float d,e,f; long g,h,i; cinabc; cindef; cinghi; int m; m= max(a,b,c); /函數(shù)值為
31、整型函數(shù)值為整型 cout max_i=mendl; float n; n=max(d,e,f); /函數(shù)值為實(shí)型函數(shù)值為實(shí)型 coutmax_f=nendl; long int p; p=max(g,h,i); /函數(shù)值為長整型函數(shù)值為長整型 coutmax_l=pendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院43例 1.7 下面的例子說明用函數(shù)重載設(shè)計(jì)參數(shù)個(gè)數(shù)不同的下面的例子說明用函數(shù)重載設(shè)計(jì)參數(shù)個(gè)數(shù)不同的函數(shù),用一個(gè)函數(shù)名求兩個(gè)整數(shù)或三個(gè)整數(shù)中的函數(shù),用一個(gè)函數(shù)名求兩個(gè)整數(shù)或三個(gè)整數(shù)中的最大數(shù)。最大數(shù)。 #include using namespace st
32、d; int max(int a,int b,int c) /求求3個(gè)整數(shù)中的最大者個(gè)整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院44 int max(int a, int b) /求兩個(gè)整數(shù)中的最大者求兩個(gè)整數(shù)中的最大者 if (ab) return a; else return b; int main( ) int a=7,b=-4,c=9; coutmax(a,b,c)endl; /輸出輸出3個(gè)整數(shù)中的最大者個(gè)整數(shù)中的最大者 coutmax(a,b)endl; /輸出兩個(gè)整數(shù)中的最大者輸出兩個(gè)整數(shù)中的
33、最大者 return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院45注意:注意:不允許函數(shù)參數(shù)個(gè)數(shù)、參數(shù)類型都不允許函數(shù)參數(shù)個(gè)數(shù)、參數(shù)類型都相同,只是函數(shù)返回值不同。因?yàn)橄到y(tǒng)無相同,只是函數(shù)返回值不同。因?yàn)橄到y(tǒng)無法從調(diào)用形式上判斷調(diào)用與哪個(gè)函數(shù)相匹法從調(diào)用形式上判斷調(diào)用與哪個(gè)函數(shù)相匹配。配。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院461.4.5 函數(shù)模板函數(shù)模板 如果兩個(gè)函數(shù)的參數(shù)個(gè)數(shù)相同,函數(shù)的行為相同如果兩個(gè)函數(shù)的參數(shù)個(gè)數(shù)相同,函數(shù)的行為相同(做同樣的事),只是函數(shù)和參數(shù)的數(shù)據(jù)類型不同,(做同樣的事),只是函數(shù)和參數(shù)的數(shù)據(jù)類型不同,如果用函數(shù)重載的話,編寫的函數(shù)代碼是相同的,如
34、果用函數(shù)重載的話,編寫的函數(shù)代碼是相同的,為了節(jié)省時(shí)間,為了節(jié)省時(shí)間,c+提供了函數(shù)模板功能。提供了函數(shù)模板功能。 格式:格式:template 函數(shù)定義(函數(shù)的類型和參數(shù)的類型用聲明的標(biāo)識函數(shù)定義(函數(shù)的類型和參數(shù)的類型用聲明的標(biāo)識符表示)符表示)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院47template 是關(guān)鍵字,含義是模板。是關(guān)鍵字,含義是模板。typename 是關(guān)鍵字,表示其后的標(biāo)識符代表類是關(guān)鍵字,表示其后的標(biāo)識符代表類型參數(shù),調(diào)用時(shí)根據(jù)實(shí)參的類型確定形參的類型。型參數(shù),調(diào)用時(shí)根據(jù)實(shí)參的類型確定形參的類型。所謂函數(shù)模板,是建立一個(gè)通用函數(shù),不指定函所謂函數(shù)模板,是建立一個(gè)通用
35、函數(shù),不指定函數(shù)類型和參數(shù)類型,而用一個(gè)虛擬的類型表示。數(shù)類型和參數(shù)類型,而用一個(gè)虛擬的類型表示。在調(diào)用函數(shù)時(shí),用實(shí)參的類型取代模板中的虛擬在調(diào)用函數(shù)時(shí),用實(shí)參的類型取代模板中的虛擬類型。類型。例例1.8 為計(jì)算兩個(gè)數(shù)中的大數(shù)定義函數(shù)模板為計(jì)算兩個(gè)數(shù)中的大數(shù)定義函數(shù)模板2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院48 #include using namespace std; template t max(t a,t b,t c) /用虛擬類型t表示類型 if(ba) a=b; if(ca) a=c; return a; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院49 int main()
36、int i1=8,i2=5,i3=6,i; double d1=56.9,d2=90.765,d3=43.1,d; long g1=67843,g2=-456,g3=78123,g; i=max(i1,i2,i3); d=max(d1,d2,d3); g=max(g1,g2,g3); couti_max=iendl; coutd_max=dendl; coutg_max=gendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院50 從程序中看到,此問題用函數(shù)模板比用函從程序中看到,此問題用函數(shù)模板比用函數(shù)重載更方便。數(shù)重載更方便。注意,注意,函數(shù)模板只適用于函數(shù)模板只適用
37、于函數(shù)參數(shù)的個(gè)數(shù)相同而類型不同,并且函函數(shù)參數(shù)的個(gè)數(shù)相同而類型不同,并且函數(shù)體相同的情況,如果函數(shù)的參數(shù)個(gè)數(shù)不數(shù)體相同的情況,如果函數(shù)的參數(shù)個(gè)數(shù)不同,則不能用函數(shù)模板。同,則不能用函數(shù)模板。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院511.4.6 有默認(rèn)參數(shù)的函數(shù)有默認(rèn)參數(shù)的函數(shù) c+允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值,這時(shí)調(diào)用函數(shù)時(shí),如允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值,這時(shí)調(diào)用函數(shù)時(shí),如果沒有實(shí)參,就以默認(rèn)值作為實(shí)參值。果沒有實(shí)參,就以默認(rèn)值作為實(shí)參值。格式:格式:形參類型形參類型 形參變量名形參變量名 = 常數(shù)常數(shù)功能:調(diào)用函數(shù)時(shí),如果沒有實(shí)參,就以常數(shù)作為該形參功能:調(diào)用函數(shù)時(shí),如果沒有實(shí)參,就以常
38、數(shù)作為該形參的值的值;如果有實(shí)參,仍以實(shí)參的值作為該形參的值。如果有實(shí)參,仍以實(shí)參的值作為該形參的值。注意:注意:有默認(rèn)值的形參必須放在形參表的右邊,不允許無有默認(rèn)值的形參必須放在形參表的右邊,不允許無默認(rèn)參數(shù)值和有默認(rèn)參數(shù)值的形參交錯(cuò)排列。默認(rèn)參數(shù)值和有默認(rèn)參數(shù)值的形參交錯(cuò)排列。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院52例:編寫計(jì)算圓柱體體積函數(shù)例:編寫計(jì)算圓柱體體積函數(shù)float volume ( float h, float r = 12.5)調(diào)用可以采用以下任何一種形式:調(diào)用可以采用以下任何一種形式:volume( 45.6);volume( 32.5, 10.5);函數(shù)參數(shù)結(jié)合
39、從左到右,用第一種方式調(diào)用時(shí),函數(shù)參數(shù)結(jié)合從左到右,用第一種方式調(diào)用時(shí),只有一個(gè)實(shí)參,圓半徑的值取默認(rèn)值只有一個(gè)實(shí)參,圓半徑的值取默認(rèn)值12.5,用第,用第二種方式調(diào)用時(shí),有兩個(gè)實(shí)參,圓半徑的值取實(shí)二種方式調(diào)用時(shí),有兩個(gè)實(shí)參,圓半徑的值取實(shí)參的值參的值10.5。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院53 注意:注意: 1、如果用函數(shù)原型聲明,只要在函數(shù)原型聲明、如果用函數(shù)原型聲明,只要在函數(shù)原型聲明中定義形參的默認(rèn)值即可。中定義形參的默認(rèn)值即可。 2、一個(gè)函數(shù)名不能同時(shí)用于重載函數(shù)和帶默認(rèn)、一個(gè)函數(shù)名不能同時(shí)用于重載函數(shù)和帶默認(rèn)形參值的函數(shù)。當(dāng)調(diào)用函數(shù)時(shí),如少寫一個(gè)參數(shù),形參值的函數(shù)。當(dāng)
40、調(diào)用函數(shù)時(shí),如少寫一個(gè)參數(shù),系統(tǒng)無法判斷是利用重載函數(shù)還是利用帶默認(rèn)參系統(tǒng)無法判斷是利用重載函數(shù)還是利用帶默認(rèn)參數(shù)值的函數(shù),出現(xiàn)二義性。數(shù)值的函數(shù),出現(xiàn)二義性。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院54 例如將例如將例例1.7中的第三行改為中的第三行改為 int max (int a, int b, int c = 100); 此時(shí)此時(shí) max是重載函數(shù),又帶默認(rèn)參數(shù)值,如果出是重載函數(shù),又帶默認(rèn)參數(shù)值,如果出現(xiàn)現(xiàn)max( 5, 23)形式的調(diào)用,編譯系統(tǒng)無法斷定調(diào)形式的調(diào)用,編譯系統(tǒng)無法斷定調(diào)用哪個(gè)函數(shù),于是發(fā)出編譯出錯(cuò)的信息。用哪個(gè)函數(shù),于是發(fā)出編譯出錯(cuò)的信息。2021-11-3南京
41、中醫(yī)藥大學(xué)信息技術(shù)學(xué)院551.4.7 變量的引用變量的引用 c+提供了為變量取別名的功能,這就是變量的提供了為變量取別名的功能,這就是變量的引用。引用。 格式:格式: 類型類型 &變量變量1 = 變量變量2; 變量變量2是在此之前已經(jīng)定義過的變量,且與變量是在此之前已經(jīng)定義過的變量,且與變量1的類型相同。這里為變量的類型相同。這里為變量2定義一個(gè)別名變量定義一個(gè)別名變量1,在程序里變量在程序里變量1和變量和變量2 就是同一個(gè)變量。就是同一個(gè)變量。 注意:注意:兩個(gè)變量不能用同一個(gè)別名。兩個(gè)變量不能用同一個(gè)別名。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院56例:例:int a = 3
42、,b =4; int &c = a; / c是是a 的別名的別名 int &c = b; / 錯(cuò)誤的用法錯(cuò)誤的用法一個(gè)變量可以有多個(gè)別名一個(gè)變量可以有多個(gè)別名例:例:int a = 3; int & b= a; int & c= b;變量變量a 有兩個(gè)別名有兩個(gè)別名b和和c。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院57 #include using namespace std; int main( ) int a=10; int &b=a; /聲明聲明b是是a的引用的引用 a=a*a; /a的值變化了,的值變化了,b的值也應(yīng)一起變化的值也應(yīng)一起變化
43、couta bendl; b=b/5; /b的值變化了,的值變化了,a的值也應(yīng)一起變化的值也應(yīng)一起變化 coutb aendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院58圖圖1.1程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下:100 10020 202021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院59將引用作為函數(shù)參數(shù)將引用作為函數(shù)參數(shù) c+除了可以用普通變量、指針變量做形參外,除了可以用普通變量、指針變量做形參外,還可以用引用變量做形參。還可以用引用變量做形參。(1)用普通變量做形參)用普通變量做形參 這時(shí)傳遞的是實(shí)參的值,在函數(shù)內(nèi)形參與實(shí)這時(shí)傳遞的是實(shí)參的值,在函數(shù)內(nèi)形參與實(shí)
44、參是兩個(gè)不同的內(nèi)存單元,對形參的修改不會(huì)影參是兩個(gè)不同的內(nèi)存單元,對形參的修改不會(huì)影響實(shí)參的值。響實(shí)參的值。例例1.10無法實(shí)現(xiàn)兩個(gè)變量的值互換的程序無法實(shí)現(xiàn)兩個(gè)變量的值互換的程序2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院60 #include using namespace std; void swap(int a,int b) int temp; temp=a; a=b; b=temp; / 實(shí)現(xiàn)實(shí)現(xiàn)a和和b的值互換的值互換 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院61 int main( ) int i=3,j=5; swap(i,j); couti,jendl; / i和和j的值
45、未互換的值未互換 return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院62圖圖1.22021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院63(2)用指針變量做形參)用指針變量做形參 c語言還允許用指針變量做形參,這語言還允許用指針變量做形參,這時(shí)傳遞的是實(shí)參變量的地址(指針),在時(shí)傳遞的是實(shí)參變量的地址(指針),在函數(shù)內(nèi)利用這個(gè)指針訪問實(shí)參變量。函數(shù)內(nèi)利用這個(gè)指針訪問實(shí)參變量。例例1.11 用指針變量做形參,實(shí)現(xiàn)兩個(gè)變量用指針變量做形參,實(shí)現(xiàn)兩個(gè)變量值的交換。值的交換。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院64 #include using namespace std; void s
46、wap(int *p1,int *p2) int temp; temp=*p1; *p1= *p2; *p2=temp; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院65 int main( ) int i=3,j=5; swap(&i,&j); couti,jendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院66圖圖1.3 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院67 (3)用引用變量做形參)用引用變量做形參 用指針變量做形參,它將實(shí)參變量的地址傳用指針變量做形參,它將實(shí)參變量的地址傳遞給形參,在函數(shù)內(nèi)用遞給形參,在函數(shù)內(nèi)用“*指針變量指針變量”
47、的方式訪問的方式訪問實(shí)參變量。我們知道引用變量是變量的別名,在實(shí)參變量。我們知道引用變量是變量的別名,在調(diào)用函數(shù)時(shí),用引用變量做的形參就成了實(shí)參變調(diào)用函數(shù)時(shí),用引用變量做的形參就成了實(shí)參變量的別名,在函數(shù)中用的形參名就是實(shí)參的別名,量的別名,在函數(shù)中用的形參名就是實(shí)參的別名,這樣比用指針變量更直觀、更方便。這樣比用指針變量更直觀、更方便。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院68 例例1.12 利用引用變量實(shí)現(xiàn)兩個(gè)變量值的交換利用引用變量實(shí)現(xiàn)兩個(gè)變量值的交換 #include using namespace std; void swap(int &a,int &b) in
48、t temp; temp=a; a=b; b=temp; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院69 int main( ) int i=3,j=5; swap(i,j); couti=i j=jendl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院70圖圖1.4 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院71對引用的進(jìn)一步說明對引用的進(jìn)一步說明 (1)引用變量都具有非)引用變量都具有非void類型類型 (2)不能建立引用的數(shù)組)不能建立引用的數(shù)組 (3)可以建立常引用變量,不允許修改常引用)可以建立常引用變量,不允許修改常引用變量的值變量的值 例:例: int
49、i ; const int &a = i; a = 3; / 錯(cuò)誤的用法錯(cuò)誤的用法 i = 8; / i 不是常變量,可以修改不是常變量,可以修改2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院72 (4)可以建立指針變量的引用變量)可以建立指針變量的引用變量 例:例:int i; int *p = & i; int * &pt = p; / pt是是p的別名變量,同時(shí)的別名變量,同時(shí) / 也是指針變量也是指針變量2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院731.4.8 內(nèi)置函數(shù)內(nèi)置函數(shù) c+ 提供了一種機(jī)制,在編譯時(shí),將所調(diào)用的函數(shù)的提供了一種機(jī)制,在編譯時(shí),將所調(diào)用的
50、函數(shù)的代碼嵌入到調(diào)用函數(shù)代碼中,在執(zhí)行函數(shù)時(shí)省去了調(diào)用環(huán)代碼嵌入到調(diào)用函數(shù)代碼中,在執(zhí)行函數(shù)時(shí)省去了調(diào)用環(huán)節(jié),提高了函數(shù)的執(zhí)行速度。這種機(jī)制稱為內(nèi)置函數(shù),有節(jié),提高了函數(shù)的執(zhí)行速度。這種機(jī)制稱為內(nèi)置函數(shù),有的書稱內(nèi)聯(lián)函數(shù)。的書稱內(nèi)聯(lián)函數(shù)。格式:格式: inline 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名(形參表形參表) 函數(shù)體函數(shù)體 inline 是是c+的關(guān)鍵字,在編譯時(shí),編譯程序會(huì)把這個(gè)的關(guān)鍵字,在編譯時(shí),編譯程序會(huì)把這個(gè)函數(shù)嵌入到調(diào)用函數(shù)的函數(shù)體中。函數(shù)嵌入到調(diào)用函數(shù)的函數(shù)體中。調(diào)用格式:調(diào)用格式: 函數(shù)名(實(shí)參表)函數(shù)名(實(shí)參表)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院74 例例1.13計(jì)
51、算三個(gè)整數(shù)中的大數(shù)計(jì)算三個(gè)整數(shù)中的大數(shù) #include using namespace std; inline int max(int a,int b,int c) / 這是一個(gè)內(nèi)置函數(shù),這是一個(gè)內(nèi)置函數(shù), / 求求3個(gè)整數(shù)中的最大者個(gè)整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; int main( ) int i=7,j=10,k=25,m; m=max(i,j,k); coutmax=ma) a=b; if ( ca) a=c; m=a; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院76 例例1.15用內(nèi)置函數(shù)計(jì)算平方根用內(nèi)置函數(shù)計(jì)算平方根 #i
52、nclude using namespace std; inline int power(int x) /定義內(nèi)置函數(shù)定義內(nèi)置函數(shù) return x*x; int main() coutpower(2)endl; coutpower(1+1)endl; return 0; 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院77 編譯程序遇見內(nèi)置函數(shù)編譯程序遇見內(nèi)置函數(shù)power時(shí),先求出函數(shù)的時(shí),先求出函數(shù)的實(shí)參值(實(shí)參值(1+1=2),然后用),然后用power函數(shù)體代替函函數(shù)體代替函數(shù)調(diào)用,調(diào)用語句變成:數(shù)調(diào)用,調(diào)用語句變成: cout2*2endl; cout2*2endl;運(yùn)行結(jié)果是運(yùn)行結(jié)果
53、是44 2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院78使用內(nèi)置函數(shù)可以節(jié)省程序的運(yùn)行時(shí)間,使用內(nèi)置函數(shù)可以節(jié)省程序的運(yùn)行時(shí)間,但增加了目標(biāo)程序的長度。所以在使用時(shí)但增加了目標(biāo)程序的長度。所以在使用時(shí)要衡量時(shí)間和空間的得失。要衡量時(shí)間和空間的得失。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院791.4.9 作用域運(yùn)算符作用域運(yùn)算符 不是所有的變量在程序運(yùn)行的時(shí)時(shí)刻刻都是可不是所有的變量在程序運(yùn)行的時(shí)時(shí)刻刻都是可見的。有的變量在整個(gè)程序運(yùn)行期間都是可見的,見的。有的變量在整個(gè)程序運(yùn)行期間都是可見的,稱它們?yōu)榉Q它們?yōu)槿肿兞咳肿兞浚挥械淖兞恐荒茉谝粋€(gè)函數(shù)中;有的變量只能在一個(gè)函數(shù)中可知,被稱為可
54、知,被稱為局部變量局部變量。 每個(gè)變量都有其有效的每個(gè)變量都有其有效的作用域作用域,程序只能在變,程序只能在變量的有效的作用域內(nèi)使用變量,不能直接使用其量的有效的作用域內(nèi)使用變量,不能直接使用其他域中的變量。他域中的變量。2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院80程序的內(nèi)存區(qū)域程序的內(nèi)存區(qū)域程序的內(nèi)存空間程序的內(nèi)存空間代碼區(qū)代碼區(qū)全局?jǐn)?shù)據(jù)區(qū)全局?jǐn)?shù)據(jù)區(qū)堆區(qū)堆區(qū)棧區(qū)棧區(qū)程序中各個(gè)函數(shù)的代碼程序中各個(gè)函數(shù)的代碼程序中全局?jǐn)?shù)據(jù)和靜態(tài)數(shù)據(jù)程序中全局?jǐn)?shù)據(jù)和靜態(tài)數(shù)據(jù)程序中的動(dòng)態(tài)數(shù)據(jù)程序中的動(dòng)態(tài)數(shù)據(jù)程序中各函數(shù)內(nèi)的數(shù)據(jù)程序中各函數(shù)內(nèi)的數(shù)據(jù)2021-11-3南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院81例例1.16 局部變量和全局變量同名局部變量和全局變量同名#includ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物實(shí)驗(yàn)攪拌機(jī)租賃合同
- 質(zhì)量監(jiān)控管理制度的秘訣
- 電商運(yùn)營兼職人員錄用合同
- 海上石油鉆探海域租賃合同
- 安防監(jiān)控勞務(wù)施工協(xié)議
- 幼兒園內(nèi)環(huán)?;顒?dòng)協(xié)議
- 聲學(xué)隔音涂料施工合同
- 網(wǎng)絡(luò)代理合同范本
- 設(shè)備拆除合同范本
- 證券投資木門安裝協(xié)議
- 淺談校園影視在學(xué)校教育中的作用
- 無公害農(nóng)產(chǎn)品查詢
- 試劑、試藥、試液的管理規(guī)程
- 研究生課程應(yīng)用電化學(xué)(課堂PPT)
- 通信綜合網(wǎng)管技術(shù)規(guī)格書doc
- 六宮數(shù)獨(dú)可直接打印共192題
- 班會(huì):如何克服浮躁心理PPT優(yōu)秀課件
- 四宗宗義比較略記
- Monsters歌詞下載,Monsters原唱歌詞中文翻譯,Monsters簡譜KatieSky
- 全國各地區(qū)代碼
- 氣動(dòng)系統(tǒng)內(nèi)部結(jié)露的機(jī)理研究
評論
0/150
提交評論