《Visual_C++_實(shí)用教程(第3版)》課件.pptx_第1頁
《Visual_C++_實(shí)用教程(第3版)》課件.pptx_第2頁
《Visual_C++_實(shí)用教程(第3版)》課件.pptx_第3頁
《Visual_C++_實(shí)用教程(第3版)》課件.pptx_第4頁
《Visual_C++_實(shí)用教程(第3版)》課件.pptx_第5頁
已閱讀5頁,還剩777頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第1章 基本C+語言,C+是在20世紀(jì)80年代初期由貝爾實(shí)驗(yàn)室設(shè)計(jì)的一種在C語言的基礎(chǔ)上增加了對 面向?qū)ο蟪绦蛟O(shè)計(jì)支持的語言,它是目前應(yīng)用最為廣泛的編程語言。本章先來說 明C+程序結(jié)構(gòu),然后詳細(xì)討論數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、基本語句、函數(shù)和 預(yù)處理、構(gòu)造類型、指針和引用等內(nèi)容。需要說明的是,在學(xué)習(xí)本章之前最好先 做實(shí)驗(yàn)1。 1.1 C+程序結(jié)構(gòu) 同其他程序設(shè)計(jì)語言一樣,C+也有自己的程序結(jié)構(gòu)。,1.1.1 幾個(gè)C+程序,下面先來介紹幾個(gè)比較簡單的C+程序。 例Ex_Simple1 一個(gè)簡單的C+程序 #include stdafx.h /* C+程序的基本結(jié)構(gòu) */ #include void

2、 main() double r, area;/ 聲明變量 coutr;/ 從鍵盤上輸入變量r的值 area = 3.14159 * r * r;/ 計(jì)算面積 cout圓的面積為:arean; / 輸出面積 ,1.1.1 幾個(gè)C+程序,例Ex_Simple2 在屏幕上輸出一個(gè)由星號形成的三角形 / 輸出星號的三角形陣列 #include void DoDraw(int num); / 聲明一個(gè)全局函數(shù) void main() int num=5;/ 定義并初始化變量 DoDraw(num);/ 函數(shù)的調(diào)用 void DoDraw(int num)/ 函數(shù)的定義 for (int i=0; in

3、um; i+) / 循環(huán)語句 for (int j=0; j=i; j+) cout*; coutn; 主函數(shù)main和被調(diào)用的函數(shù)DoDraw。DoDraw函數(shù)是在屏幕上輸出 星號的三角形陣列,這個(gè)陣列的行數(shù)以及每行星號的個(gè)數(shù)由num決定。結(jié)果如下:,1.1.1 幾個(gè)C+程序,例Ex_Simple3 用類的概念重寫例Ex_Draw #include class CDrawArray/ 定義一個(gè)類 public: void DoDraw(int num);/ 聲明類的公有成員函數(shù) ; void CDrawArray:DoDraw(int num)/ 成員函數(shù)的實(shí)現(xiàn) for (int i=0;i

4、num;i+) for (int j=0;j=i;j+)cout*;coutn; void main() int num=5; CDrawArray myDraw;/ 定義類的一個(gè)對象 myDraw.DoDraw(num);/ 調(diào)用此對象的成員函數(shù) 雖然本程序的作用和例Ex_Simple2是一樣的,但它引用了類的概念,是一個(gè)面向?qū)ο蟮?C+程序。程序中class后的名稱是要定義的類名,該類僅聲明了一個(gè)公共類型的成員函 數(shù)DoDraw。調(diào)用時(shí),先定義該類的對象,然后像myDraw.DoDraw(num)語句那樣調(diào)用。,1.1.2 C+程序的基本組成,從上面的幾個(gè)例子可以看出,一個(gè)C+程序往往由預(yù)

5、處理命令、語句、函數(shù)、變量和對 象、輸入與輸出以及注釋等幾個(gè)基本部分組成的。 (1) 預(yù)處理命令。 (2) 語句。 (3) 函數(shù)。 (4) 變量和對象。 (5) 輸入與輸出。 (6) 注釋。,1.1.3 C+程序的書寫風(fēng)格,1. 標(biāo)識符命名 標(biāo)識符是用來標(biāo)識變量名、函數(shù)名、數(shù)組名、類名、對象名等的有效字符序列。 下面幾個(gè)原則是命名時(shí)所必須注意的。 (1) 合法性。C+規(guī)定標(biāo)識符由大小寫字母、數(shù)字字符(09)和下劃線組成,且第 一個(gè)字符必須為字母或下劃線。任何標(biāo)識符中都不能有空格、標(biāo)點(diǎn)符號及其他字符, (2) 有效性。 (3) 易讀性。,1.1.3 C+程序的書寫風(fēng)格,2. 縮進(jìn)和注釋 縮進(jìn) 每

6、個(gè)“”花括號占一行,并與使用花括號的語句對齊。花括號內(nèi)的語句采用縮進(jìn)書寫格式,縮進(jìn)量為四個(gè)字符(一個(gè)默認(rèn)的制表符)。 注釋要注意的是: 注釋應(yīng)在編程的過程中同時(shí)進(jìn)行,不要指望程序開發(fā)完成后再補(bǔ)寫注釋。 必要的注釋內(nèi)容應(yīng)包含: 在源文件頭部進(jìn)行必要的源程序的總體注釋:版權(quán)說明、版本號、生成日期、作者、內(nèi)容、功能、與其它文件的關(guān)系、修改日志等,頭文件的注釋中還應(yīng)有函數(shù)功能簡要說明。 在函數(shù)的頭部進(jìn)行必要的函數(shù)注釋:函數(shù)的目的/功能、輸入?yún)?shù)、輸出參數(shù)、返回值、調(diào)用關(guān)系(函數(shù)、表)等。 其他的少量注釋。如全局變量的功能、取值范圍等。千萬不要陳述那些一目了然的內(nèi)容,否則會(huì)使注釋的效果適得其反。,1.2

7、.1 基本數(shù)據(jù)類型,C+基本數(shù)據(jù)類型有char(字符型)、int(整型)、float(單精度實(shí)型)和double(雙精度實(shí)型),“實(shí)型”又可稱為“浮點(diǎn)型”。在ANSI C+中,基本數(shù)據(jù)類型還有wchar_t(雙字節(jié)字符型)和bool(布爾型,值為false或true,而false用0表示,true用1表示)。 需要說明的是: (1) 無符號(unsigned)和有符號(signed)的區(qū)別在于數(shù)值最高位的含義。對于signed類型來說,最高位是符號位,其余各位表示數(shù)值大小;而unsigned類型的各個(gè)位都用來表示數(shù)值大??;因此相同基本數(shù)據(jù)類型的signed和unsigned的數(shù)值范圍是不同。例

8、如,無符號字符型值的范圍為0255,而有符號字符型值的范圍為 -128 -127。 (2) char、short、int和long可統(tǒng)稱為整型。默認(rèn)時(shí),char、short、int和long本身是有符號(signed)的。,1.2.1 基本數(shù)據(jù)類型,圖1.1 C+的數(shù)據(jù)類型,1.2.1 基本數(shù)據(jù)類型,表1.1 C+的基本數(shù)據(jù)類型,1.2.2 常量,根據(jù)程序中數(shù)據(jù)的可變性,數(shù)據(jù)可以分為常量和變量兩大類。 在程序運(yùn)行過程中,其值不能被改變的量稱為“常量”。常量,又稱為“直 接量”,可分為不同的類型,如1、20、0、-6為整型常量,1.2、-3.5為實(shí) 型常量,a、b為字符常量。常量一般從其字面形式

9、即可判別。下面介 紹各種不同數(shù)據(jù)類型常量的表示方法。,1.2 .2常量,1. 整型常量 整型常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制來表示。 (1) 十進(jìn)制整型常量。即十進(jìn)制整數(shù),如34、128等。 (2) 八進(jìn)制整型常量。以數(shù)字0開頭的數(shù)是八進(jìn)制整數(shù),它由0至7的數(shù)字組成。如 045,即(45)8,表示八進(jìn)制數(shù)45,等于十進(jìn)制數(shù)37;-023表示八進(jìn)制數(shù)-23,等 于十進(jìn)制數(shù)-19。 (3) 十六進(jìn)制整型常量。以0 x或0X開頭的數(shù)是十六進(jìn)制整數(shù),它由0至9、A至F或 a至f組成。例如0 x7B,即(7B)16,等于十進(jìn)制的123,-0X1a等于十進(jìn)制的-26。 需要注意的是: 整型常量中的長整型

10、(long)要以L或小寫字母l作為結(jié)尾,如3276878L,496l等。 整型常量中的無符號型(unsigned)要以U或u作為結(jié)尾,如2100U,6u,100ul (表示unsigned long)等。,1.2.2 常量,實(shí)型常量 實(shí)型常量即實(shí)數(shù),它有十進(jìn)制數(shù)或指數(shù)兩種表示形式。 (1) 十進(jìn)制數(shù)形式。十進(jìn)制數(shù)形式是由整數(shù)部分和小數(shù)部分組成的(注意必須有小 數(shù)點(diǎn))。例如0.12、.12、1.2、12.0、12.、0.0都是十進(jìn)制數(shù)形式。 (2) 指數(shù)形式。指數(shù)形式采用科學(xué)表示法,它能表示出很大或很小的實(shí)數(shù)。例如 1.2e9或1.2E9都代表1.2 x 109,注意字母E(或e)前必須有數(shù)字,

11、且E(或e)后面的 指數(shù)必須是整數(shù)。 若實(shí)型常量是以F(或f)結(jié)尾的,則表示單精度實(shí)型(float),以L(或小寫字母l)結(jié)尾 的,表示長雙精度實(shí)型(long double)。若一個(gè)實(shí)型常量沒有任何說明,表示雙精 度實(shí)型(double)。,1.2 .2常量,字符常量 字符常量是用單引號括起來的一個(gè)字符。如A、g、%、 等都是字符常量。注意B和b是兩個(gè)不同的字符常量。 C+還可以用一個(gè)“”開頭的字符序列來表示特殊形式的字符常量。 表1.2列出了常用的轉(zhuǎn)義序列符。,表1.2 C+中常用轉(zhuǎn)義序列符,1.2.2 常量,字符串常量 C+語言中除了允許使用字符常量外,還允許使用字符串常量。字符串常量是一

12、對雙引號括起來的字符序列。例如: “Hello, World!n” “C+語言” “abcdef” 等等都是字符串常量。字符串常量中還可以包含空格、轉(zhuǎn)義序列符或其他字符。 由于雙引號是字符串的分界符,因此如果需要在字符串中出現(xiàn)雙引號則必須用 “”表示。例如: “Please press “F1” to help!” 這個(gè)字符串被解釋為: Please press “F1” to help! 字符串常量應(yīng)盡量在同一行書寫,若一行寫不下,可用來連接,例如: “ABCD EFGHIGK.”,1.2 常量,符號常量 在C+中,也可以用一個(gè)標(biāo)識符來代替一個(gè)常量。例如: 例Ex_PI1 用#define定

13、義符號常量 #include #define PI 3.14159 void main() double r = 100.0, area; area = PI * r * r; cout圓的面積是:area n; 程序中用#define命令行定義PI,使其代替常量3.141593,此后凡是在程序中出現(xiàn)的PI都代表3.14159,可以和常量一樣進(jìn)行運(yùn)算。 在C+中,除了用#define定義符號常量外,C+還常常用const定義的變量來代替#define定義的符號常量。,1.2.2 常量,例Ex_PI2 用const定義的變量代替符號常量 #include const double PI = 3.

14、14159; void main() double r = 100.0, area; area = PI * r * r; cout圓的面積是:area n; 與例Ex_PI1相比,程序代碼幾乎一樣,不同的地方是第二行中的const和例 Ex_PI1中的#define不一樣。,1.2.3 變量,變量是指在程序執(zhí)行中其值可以改變的量。 變量有3個(gè)基本要素:C+合法的變量名、變量類型和變量的數(shù)值。 1. 變量的定義 一般格式語句進(jìn)行定義的(凡格式中出現(xiàn)的尖括號“”,表示 括號中的內(nèi)容是必需指定,若為方括號“”,則括號中的內(nèi)容是可選的,本書作 此約定): ; 變量名和數(shù)據(jù)類型是告訴編譯器要為其分配多

15、少內(nèi)存空間,以及變量中要存取的 是什么類型的數(shù)據(jù)。例如: int nNum1; int nNum2; int nNum3; double x; 這樣,nNum1、nNum2、nNum3分別占用4個(gè)字節(jié)的存儲空間,其存取的數(shù)據(jù) 類型是int型,稱之為“整型變量”,而x則占用8個(gè)字節(jié)的存儲空間,存取的數(shù)據(jù)類 型是double型,稱之為“雙精度實(shí)型變量”。有時(shí),為使代碼簡潔,還可以將同類 型的變量定義在一行語句中,不過同類型的變量名要用逗號(,)分隔。,1.2.3 變量,2. 變量的初始化 程序中常需要對一些變量預(yù)先設(shè)置初值,即將初值存儲在變量名所代表的內(nèi)存空 間,這一過程稱為初始化。在C+中,變量

16、初始化是在定義變量時(shí)同時(shí)賦初值。 例如: int nNum1 = 3;/ 指定nNum1為整型變量,初值為3 double x = 1.28;/ 指定x為雙精度實(shí)變量,初值為1.28 char c = G;/ 指定c為字符變量,初值為G 也可以在多個(gè)變量的定義語句中單獨(dú)對某個(gè)變量初始化,如: int nNum1, nNum2 = 3, nNum3; 變量的初始化還有另外一種形式,例如: int nX(1), nY(3); 表示nX和nY是整型變量,它們的初值分別為1和3。 。,1.2.4 基本輸入、輸出,1. 輸出流(cout) 通過cout可以輸出一個(gè)整數(shù)、實(shí)數(shù)、字符及字符串,cout中的插

17、入符“ void main() coutABCDt1234tendl; 執(zhí)行該程序,結(jié)果如下: ABCD 1234 程序中“t”是制表符(見表1.2),它將后面的1234在水平的下一個(gè)制表位置輸出。 endl是C+中控制輸出流的一個(gè)操作算子(預(yù)定義的對象),它的作用和n等價(jià), 都是結(jié)束當(dāng)前行,并將屏幕輸出的光標(biāo)移至下一行。,1.2.4 基本輸入、輸出,實(shí)際上,為了更好地調(diào)整輸出格式,有時(shí)還可以使用下面的輸出函數(shù)。 (1) width()函數(shù)。width()函數(shù)有兩種格式: int width(); int width(int); 第一種格式用來獲取當(dāng)前輸出數(shù)據(jù)時(shí)的寬度,另一種格式是用來設(shè)置當(dāng)前

18、輸出數(shù)據(jù)時(shí)的寬度。 (2) precision()函數(shù)。與width()相似,precision()也有兩種格式: int precision(); int precision(int); (3) fill()函數(shù)。fill()函數(shù)也有下列兩種格式,這兩種格式分別用來獲取和設(shè)置當(dāng)前寬度內(nèi)的填充字符,第二種格式函數(shù)還將返回設(shè)置前的填充字符。 char fill(); char fill(char);,1.2.4 基本輸入、輸出,下面通過一個(gè)例子說明上述格式輸出函數(shù)的用法。 例Ex_CoutFrm cout的格式輸出 #include void main() intnNum = 1234; dou

19、blefNum = 12.3456789; cout1234567890endl; cout.width(10); coutnNumn; cout.width(10); coutfNumendl; coutcout.precision(4)endl; coutfNumendl; cout.fill(#); cout.width(10); coutfNumendl; 執(zhí)行該程序,結(jié)果如下:,1.2.4 基本輸入、輸出,2.輸入流(cin) cin可以獲得多個(gè)鍵盤的輸入值,它具有下列格式: cin . 其中,提取符“”可以連續(xù)寫多個(gè),每個(gè)后面跟一個(gè)表達(dá)式,該表達(dá)式通常是獲 得輸入值的變量或?qū)ο?。?/p>

20、如: int nNum1, nNum2, nNum3; cinnNum1nNum2nNum3; 要求用戶從鍵盤上輸入三個(gè)整數(shù)。輸入時(shí),必須在3個(gè)數(shù)值之間加上一些空格來 分隔,空格的個(gè)數(shù)不限,最后用回車鍵結(jié)束輸入(書中出現(xiàn)的“”表示輸入一個(gè)回 車鍵,特此約定);或者在每個(gè)數(shù)值之后按回車鍵。例如,上述輸入語句執(zhí)行 時(shí),用戶可以輸入: 12920 或 12 9 20,1.2.4 基本輸入、輸出,3.格式算子 格式算子oct、dec和hex能分別將輸入或輸出的數(shù)值轉(zhuǎn)換成oct、dec和hex 八進(jìn)制、十進(jìn)制及十六進(jìn)制,例如: 例Ex_Algorism 格式算子的使用 #include void mai

21、n() int nNum; couthexnNum; coutOcttoctnNumendl; coutDectdecnNumendl; coutHexthexnNumendl; 程序執(zhí)行時(shí),結(jié)果如下:,1.3.1 算術(shù)運(yùn)算符,算術(shù)運(yùn)算符包括雙目的加減乘除四則運(yùn)算符、求余運(yùn)算符以及單目的正負(fù)運(yùn)算 符。C+中沒有冪運(yùn)算符,冪運(yùn)算符是通過函數(shù)來實(shí)現(xiàn)的。算術(shù)運(yùn)算符如下所 示: +(正號運(yùn)算符,如+4,+1.23等) -(負(fù)號運(yùn)算符,如-4,-1.23等) *(乘法運(yùn)算符,如6*8,1.4*3.56等) /(除法運(yùn)算符,如6/8,1.4/3.56等) %(模運(yùn)算符或求余運(yùn)算符,如40%11等) +(加

22、法運(yùn)算符,如6+8,1.4+3.56等) -(減法運(yùn)算符,如6-8,1.4-3.56等),1.3.1 算術(shù)運(yùn)算符,(5) 溢出處理 在C+中,當(dāng)某數(shù)除以0或當(dāng)其它溢出時(shí),編譯系統(tǒng)將報(bào)告錯(cuò)誤并終止程序運(yùn)行。但 對整數(shù)溢出,系統(tǒng)卻不認(rèn)為是一個(gè)錯(cuò)誤,這在編程時(shí)需要特別小心。例如: 例Ex_OverFlow 一個(gè)整型溢出的例子 #include void main() short nTotal, nNum1, nNum2; nNum1 = nNum2 = 1000; nTotal = nNum1*nNum2; coutnTotaln; 程序運(yùn)行的結(jié)果是16960,1.3.2 賦值運(yùn)算符,1. 復(fù)合賦值

23、 在C+語言中,規(guī)定了10種復(fù)合賦值運(yùn)算符: +=,-=,*=,/=,%=,=,|=,=,= 它們都是在賦值符“=”之前加上其它運(yùn)算符而構(gòu)成的,其中的算術(shù)復(fù)合賦值運(yùn)算 符的含義如表1.3所示。,表1.3 復(fù)合賦值運(yùn)算符,1.3.2 賦值運(yùn)算符,1. 復(fù)合賦值 復(fù)合運(yùn)算符的優(yōu)先級和賦值符的優(yōu)先級一樣,在C+的所有運(yùn)算符中只高于逗號 運(yùn)算符,而且復(fù)合賦值運(yùn)算符的結(jié)合性也是從右至左的,所以在組成復(fù)雜的表達(dá) 式時(shí)要特別小心。例如: a *= b - 4/c + d; 等效于 a = a * ( b - 4/c + d); 而不等效于 a = a * b - 4/c + d;,1.3.2 賦值運(yùn)算符,2

24、.多重賦值 所謂多重賦值是指在一個(gè)賦值表達(dá)式中出現(xiàn)兩個(gè)或更多的賦值符(“=”),例如: nNum1 = nNum2 = nNum3 = 100; 由于賦值符的結(jié)合性是從右至左的,因此上述的賦值是這樣的過程:首先對賦值 表達(dá)式nNum3 = 100求值,即將100賦值給nNum3,同時(shí)該賦值表達(dá)式取得值 100;然后將該值賦給nNum2,這是第二個(gè)賦值表達(dá)式,該賦值表達(dá)式也取得值 100;最后將100賦給nNum1。 由于賦值是一個(gè)表達(dá)式,所以它幾乎可以出現(xiàn)在程序的任何地方,例如: a = 7 + (b = 8)(賦值表達(dá)式值為15,a值為15,b值為8) a = (c = 7) + ( b=

25、8)(賦值表達(dá)式值為15,a值為15,c值為7,b值為8),1.3.3 數(shù)據(jù)類型轉(zhuǎn)換,在進(jìn)行運(yùn)算時(shí),往往要遇到混合數(shù)據(jù)類型的運(yùn)算問題。例如一個(gè)整型數(shù) 和一個(gè)實(shí)數(shù)相加就是一個(gè)混合數(shù)據(jù)類型的運(yùn)算。C+采用兩種方法對數(shù) 據(jù)類型進(jìn)行轉(zhuǎn)換,一種是“自動(dòng)轉(zhuǎn)換”,另一種是“強(qiáng)制轉(zhuǎn)換”。,1.3.3 數(shù)據(jù)類型轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換是將數(shù)據(jù)類型從低到高的順序進(jìn)行轉(zhuǎn)換,如圖1.2所示。,例如:10 + a + 2*1.25 - 5.0/4L的運(yùn)算次序如下: (1) 進(jìn)行2*1.25的運(yùn)算,將2和1.25都轉(zhuǎn)換成double型,結(jié)果為double型的2.5。 (2) 進(jìn)行5.0/4L的運(yùn)算,將長整型4L和5.0都

26、轉(zhuǎn)換成double型,結(jié)果值為1.25。 (3) 進(jìn)行10 + a 的運(yùn)算,先將a轉(zhuǎn)換成整數(shù)97,運(yùn)算結(jié)果為107。 (4) 整數(shù)107和2.5相加,先將整數(shù)107轉(zhuǎn)換成double型,結(jié)果為double型,值為109.5。 (5) 進(jìn)行109.5 - 1.25的運(yùn)算,結(jié)果為double型的108.25。,圖1.2 類型轉(zhuǎn)換的順序,1.3.3 數(shù)據(jù)類型轉(zhuǎn)換,2. 強(qiáng)制轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換是在程序中通過指定數(shù)據(jù)類型來改變圖1.2所示的類型轉(zhuǎn)換順序,將一 個(gè)變量從其定義的類型改變?yōu)榱硪环N新的類型。強(qiáng)制類型有下列兩種格式: () () 這里的“類型名”是任何合法的C+數(shù)據(jù)類型,例如float、int等。通

27、過類型的強(qiáng)制 轉(zhuǎn)換可以將“表達(dá)式”轉(zhuǎn)換成適當(dāng)?shù)念愋?,例如?double f = 3.56; int nNum; nNum = (int)f; 或者 nNum = int(f); 都是將使nNum的值變?yōu)?。,1.3.4 關(guān)系運(yùn)算符,關(guān)系運(yùn)算是邏輯運(yùn)算中比較簡單的一種。所謂“關(guān)系運(yùn)算”實(shí)際上是比較兩個(gè)操作 數(shù)是否符合給定的條件。若符合條件,則關(guān)系表達(dá)式的值為“真”,否則為“假”。 在C+編譯系統(tǒng)中,往往將“真”表示為“true”或1,將“假”表示為“false”或0。而任 何不為0的數(shù)被認(rèn)為是“真”,0被認(rèn)為是“假”。 由于關(guān)系運(yùn)算需要兩個(gè)操作數(shù),所以關(guān)系運(yùn)算符都是雙目運(yùn)算符。 C+提供了下列

28、6種關(guān)系運(yùn)算符: (大于),=(大于等于),= =(相等于), ! =(不等于) 其中,前4種的優(yōu)先級相同且高于后面的兩種。例如: a = b c等效于a = ( b c ) 但關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符(其他可參見表1.4)。例如: a = b c等效于a = ( b c ),1.3.5 邏輯運(yùn)算符,邏輯運(yùn)算符用于將多個(gè)關(guān)系表達(dá)式或邏輯量(“真”或“假”)組成一個(gè)邏輯表達(dá)式。C+提供了 下列3種邏輯運(yùn)算符: !邏輯非(單目) 注意,只有在表達(dá)式2后面才能出現(xiàn)分號結(jié)束符,“表達(dá)式1”和“表達(dá)式2” 中都不能有分號。,1.3.8 自增和自減運(yùn)算符,單目運(yùn)算符自增(+)和自減(-)為整型變量

29、加1或減1提供一種非常有效的方法。 +和-既可放在變量的左邊也可以出現(xiàn)在變量的右邊,分別稱為前綴運(yùn)算符和后 綴運(yùn)算符。例如: i+; 或 +i;(等效于i = i + 1; 或i += 1;) i-; 或 -i;(等效于i = i - 1; 或i -= 1;) 這是要特別注意: 若前綴運(yùn)算符和后綴運(yùn)算符僅用于某個(gè)變量的增1和減1,則這兩都是等價(jià)的,但 如果將這兩個(gè)運(yùn)算符和其他的運(yùn)算符組合在一起,在求值次序上就會(huì)產(chǎn)生根本的 不同: 如果用前綴運(yùn)算符對一個(gè)變量增1(減1),在將該變量增1(減1)后,用新的值在表 達(dá)式中進(jìn)行其他的運(yùn)算。 如果用后綴運(yùn)算符對一個(gè)變量增1(減1),用該變量的原值在表達(dá)式

30、進(jìn)行其他的運(yùn) 算后,再將該變量增1(減1)。 例如: a = 5; b = +a - 1;/ 相當(dāng)于 a = a + 1; b = a 1; 和 a = 5; b = a+ -1; / 相當(dāng)于 b = a 1; a = a + 1;,1.3.8 自增和自減運(yùn)算符,雖然它們中的a值的結(jié)果都是6,但b的結(jié)果卻不一樣,前者為5,后者為4。 在自增和自減混合運(yùn)算時(shí),一要注意次序,二要注意變量是表示相應(yīng)的存儲空間 這個(gè)特性。例如: b = a+ * -a * a+;/ 相當(dāng)于 a=a1; b=a*a*a; a=a+1; a=a+1; / 若a初值為5,該句執(zhí)行后,則b=64, a=6; 這比較好理解,若

31、a的初值為5,當(dāng)有: b = -a * -a * -a; 則不同的編譯器有不同的處理方式,Turbo C+或Borland C+認(rèn)為其相當(dāng)于: a=a1; a=a1; a=a1; b=a*a*a; 顯然執(zhí)行該語句后的結(jié)果為a=2, b=8。而Visual C+先計(jì)算-a * -a,即其相當(dāng)于:a=a1; a=a1; b=a*a; 此時(shí)a=3, b=9;然后計(jì) 算9* -a,即其相當(dāng)于:a=a1;b=9*a; 結(jié)果a=2, b=18。 無論是何種處理方式,可千萬不要認(rèn)為是b=4*3*2,那是完全錯(cuò)誤的,因?yàn)樽兞縜 是表示一個(gè)相應(yīng)的存儲空間,在同一運(yùn)行周期中,其存儲的數(shù)值不應(yīng)有兩種可 能。再比如,

32、若a的初值為5,當(dāng)有: b = a+ * -a * -a;/ 執(zhí)行該語句后,TC+或BC+:a=4, b=27。VC+:a=4, b=48。,1.3.9 逗號運(yùn)算符,逗號運(yùn)算符是優(yōu)先級最低的運(yùn)算符,它可以使多個(gè)表達(dá)式放在一行上,從而大大 簡化了程序。在計(jì)算時(shí),C+將從左至右逐個(gè)計(jì)算每個(gè)表達(dá)式,最終整個(gè)表達(dá)式 的結(jié)果是最后計(jì)算的那個(gè)表達(dá)式的類型和值。例如: j = ( i = 12 , i + 8); 式中,i = 12 ,i + 8 是含逗號運(yùn)算符的表達(dá)式,計(jì)算次序是先計(jì)算表達(dá)式i = 12, 然后再計(jì)算i + 8,整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值,即i + 8的值20, 從 而j的結(jié)果是2

33、0。 再如: d = (a = 1, b = a + 2; c = b + 3); d的結(jié)果為6。,1.3.10 sizeof運(yùn)算符,sizeof的目的是返回操作數(shù)所占的內(nèi)存空間大小(字節(jié)數(shù)),它具有下列兩種格式: sizeof() sizeof() 例如: sizeof(“Hello”)/ 計(jì)算字符串常量“Hello”所占內(nèi)存的字節(jié)大小,結(jié)果為6 sizeof(int)/ 計(jì)算整型int所占內(nèi)存的字節(jié)數(shù) 需要說明的是,由于同一類型的操作數(shù)在不同的計(jì)算機(jī)中占用的存儲字節(jié)數(shù)可能 不同,因此sizeof的結(jié)果有可能不一樣。例如sizeof(int)的值可能是4,也可能是2。,1.3.11 優(yōu)先級、

34、結(jié)合性和運(yùn)算次序,1.4.1 表達(dá)式語句、空語句和復(fù)合語句,例Ex_Block 塊語句的變量使用范圍。 #include void main() int i = 5, j = 6; coutijendl;/ 輸出的結(jié)果是5和6 int i = 2, j = 3, k = 4; coutijkendl;/ 輸出結(jié)果是2、3和4 coutijendl;/ 輸出的結(jié)果仍然是5和6,但不能使用k,如coutk; 將發(fā)生錯(cuò)誤。 ,1.4.2 選擇結(jié)構(gòu)語句,1. 條件語句 條件語句if具有下列一般形式: if () else 這里的if、else是C+的關(guān)鍵字。注意,if后的一對圓括號不能省。當(dāng)“表達(dá)式”

35、為 “真”(true)或不為0時(shí),將執(zhí)行語句1。當(dāng)“表達(dá)式”為“假”(false或0)時(shí),語句2被執(zhí) 行。其中,else可省略,即變成這樣的簡單的if語句: if () 當(dāng)“表達(dá)式”為“真”(true)或不為0時(shí),語句被執(zhí)行。,1.4.2 選擇結(jié)構(gòu)語句,例Ex_Compare 輸入兩個(gè)整數(shù),比較兩者的大小 #include void main() int nNum1, nNum2; coutnNum1nNum2; if (nNum1!=nNum2) if (nNum1nNum2) cout nNum2endl; else coutnNum1 nNum2endl; else coutnNum1

36、= nNum2endl; 運(yùn)行情況如下:,1.4.2 選擇結(jié)構(gòu)語句,例Ex_Compare 輸入兩個(gè)整數(shù),比較兩者的大小 需要注意的是: (1) 條件語句中的表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式,如程序中的nNum1nNum2。當(dāng)然,表達(dá)式 的類型也可以是任意的數(shù)值類型(包括整型、實(shí)型、字符型等)。例如: if (3)coutThis is a number 3; 執(zhí)行結(jié)果是輸出This is a number 3;因?yàn)?是一個(gè)不為0的數(shù),條件總為“真”。 (2)適當(dāng)添加花括號(“ ”)來增加程序的可讀性。例如:上面例Ex_Compare中的條件語句還可寫成下列 形式,其結(jié)果是一樣的。 if (

37、nNum1!=nNum2) if (nNum1nNum2) cout nNum2) cout nNum2;/ 此句才是if后面的有效語句 coutendl;/ 此句無論if表達(dá)式是否為真都會(huì)執(zhí)行 (4) 條件語句中的語句1和語句2也可是if條件語句,這就形成了if語句的嵌套。例如程序中if (nNum1!=nNum2)后面的語句也是一個(gè)if條件語句。 (5) else總是和其前面最近的if配套的,例如程序中的第一個(gè)else是屬于第二個(gè)if,而第二個(gè)else是屬于第 一個(gè)if的。,1.4.2 選擇結(jié)構(gòu)語句,開關(guān)語句 當(dāng)程序有多個(gè)條件判斷時(shí),若使用if語句則可能使嵌套太多,降低了程序的可讀 性。開

38、關(guān)語句switch能很好地解決這種問題,它具有下列形式: switch ( ) case :語句1 case :語句2 . case :語句n default :語句n+1 其中switch、case、default都是關(guān)鍵字,當(dāng)表達(dá)式的值與case中某個(gè)表達(dá)式的值 相等時(shí),就執(zhí)行該case中“:”號后面的所有語句。若case中所有表達(dá)式的值都不 等于表達(dá)式的值,則執(zhí)行default:后面的語句,若default省略,則跳出switch 結(jié) 構(gòu)。需要注意的是:switch后面的表達(dá)式可以是整型、字符型或枚舉型的表達(dá) 式,而case后面的常量表達(dá)式的類型必須與其匹配。,1.4.2 選擇結(jié)構(gòu)語句,

39、例Ex_Switch 根據(jù)成績的等級輸出相應(yīng)的分?jǐn)?shù)段 #include void main() char chGrade; coutchGrade; switch(chGrade) case A: case a:cout90-100endl; break; case B: case b:cout80-89endl; break; case C: case c:cout70-79endl; case D: case d:cout60-69endl; case E: case e:cout 60endl; default:couterror!endl; ,1.4.2 選擇結(jié)構(gòu)語句,例Ex_Swit

40、ch 根據(jù)成績的等級輸出相應(yīng)的分?jǐn)?shù)段 運(yùn)行時(shí),當(dāng)用戶輸入A,則輸出:,但當(dāng)用戶輸入d時(shí),則結(jié)果如下:,實(shí)際上,這不是想要的結(jié)果,而應(yīng)該只輸出60-69。,1.4.3 循環(huán)結(jié)構(gòu)語句,1. while循環(huán)語句 while循環(huán)語句可實(shí)現(xiàn)“當(dāng)型”循環(huán),它具有下列形式: while () while是關(guān)鍵字,是此循環(huán)的循環(huán)體,它可以是一條語句,也可以是多條 語句。當(dāng)為多條語句時(shí),一定要用花括號(“”)括起來,使之成為復(fù)合語句,如果 不加花括號,則while的范圍只到while后面第一條語句。當(dāng)表達(dá)式為非0(“真”)時(shí) 便開始執(zhí)行while循環(huán)體中的語句,然后反復(fù)執(zhí)行,每次執(zhí)行都會(huì)判斷表達(dá)式是 否為非0,

41、若等于0(“假”),則終止循環(huán)。,1.4.3 循環(huán)結(jié)構(gòu)語句,例Ex_SumWhile 求整數(shù)1到50的和 #include void main() intnNum = 1, nTotal = 0; while (nNum=50) nTotal += nNum; nNum+; coutThe sum, from 1 to 50, is: nTotaln; 運(yùn)行結(jié)果為:,1.4.3 循環(huán)結(jié)構(gòu)語句,2.do.while循環(huán)語句 do.while循環(huán)語句可實(shí)現(xiàn)“直到型”循環(huán),它具有下列形式: do while () 其中do和while都是C+關(guān)鍵字,是此循環(huán)的循環(huán)體,它可以是一條語句,也可以是 復(fù)合

42、語句。當(dāng)語句執(zhí)行到while時(shí),將判斷表達(dá)式是否為非0值,若是,則繼續(xù)執(zhí)行循環(huán)體, 直到下一次表達(dá)式等于0為止。例如Ex_SumWhile用do.while循環(huán)語句可改寫成: 例Ex_SumDoWhile 求整數(shù)1到50的和 #include void main() intnNum = 1, nTotal = 0; do nTotal += nNum; nNum+; while (nNum=50); cout The sum, from 1 to 50, is: nTotal n; ,1.4.3 循環(huán)結(jié)構(gòu)語句,3. for循環(huán)語句 表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3truefalse圖1.3 fo

43、r循環(huán)流程圖 for循環(huán)語句既可實(shí)現(xiàn)“當(dāng)型”循環(huán),又可實(shí)現(xiàn)“直到型”循環(huán),它具有下列形式: for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 其中for是關(guān)鍵字,是此循環(huán)的循環(huán)體,它可以是一條語句,也可以是復(fù)合語句。一 般情況下,表達(dá)式1用作循環(huán)變量的初始化,表達(dá)式2是循環(huán)體的判斷條件,當(dāng)?shù)扔诜?0(true)時(shí),開始執(zhí)行循環(huán)體,然后計(jì)算表達(dá)式3,再判斷表達(dá)式2的值是否為非0,若是, 再執(zhí)行循環(huán)體,再計(jì)算表達(dá)式3,如此反復(fù),直到表達(dá)式2等于0(false)為止。其流程如圖 1.3所示。,圖1.3 for循環(huán)流程圖,1.4.3 循環(huán)結(jié)構(gòu)語句,例如,Ex_SumWhile用for循環(huán)語句可改寫成: 例Ex

44、_SumFor求整數(shù)1到50的和 #include void main() intnTotal=0; for (int nNum=1; nNum=50; nNum+) nTotal += nNum; coutThe sum, from 1 to 50, is: nTotalendl; ,1.4.4 break和continue語句,在C+程序中,若需要跳出循環(huán)結(jié)構(gòu)或提前結(jié)束本次循環(huán),就需要使用break和continue語 句,其格式如下: break; continue; break語句用于強(qiáng)制結(jié)束switch結(jié)構(gòu)(如例Ex_Switch)或從一個(gè)循環(huán)體跳出,即提前終止循 環(huán)。 contin

45、ue是用于那些依靠條件判斷而進(jìn)行循環(huán)的循環(huán)語句。 例Ex_Continue 把1100之間的不能被7整除的數(shù)輸出 #include void main() for (int nNum=1; nNum=100; nNum+) if (nNum%7 = 0) continue; coutnNum ; coutn; ,1.5.1 函數(shù)的定義和調(diào)用,函數(shù)的定義 在C+程序中,定義一個(gè)函數(shù)的格式如下: ( ) 函數(shù)體 可以看出,一個(gè)函數(shù)的定義是由函數(shù)名、函數(shù)類型、形式參數(shù)表和函數(shù)體四個(gè)部 分組成的。函數(shù)類型決定了函數(shù)所需要的返回值類型,它可以是函數(shù)或數(shù)組之外 的任何有效的C+數(shù)據(jù)類型,包括構(gòu)造的數(shù)據(jù)類型

46、、指針等。如果不需要函數(shù)有 返回值,只要定義函數(shù)的類型為void即可。,1.5.1 函數(shù)的定義和調(diào)用,2. 函數(shù)的聲明 聲明一個(gè)函數(shù)可按下列格式進(jìn)行: ( ); 其中,形參的變量名可以省略。但要注意,函數(shù)聲明的內(nèi)容應(yīng)和函數(shù)的定義應(yīng)相 同。例如對于sum()函數(shù)的聲明如下: int sum(int x, int y); 和 int sum(int , int); 是等價(jià)的。但末尾的分號“;”不要忘記。需要說明的是,函數(shù)的聲明又可稱為對函 數(shù)的原型進(jìn)行說明。,1.5.1 函數(shù)的定義和調(diào)用,3. 函數(shù)的調(diào)用 函數(shù)調(diào)用的一般形式為: ( ); 所謂“實(shí)際參數(shù)”(簡稱“實(shí)參”),它與“形參”相對應(yīng),是實(shí)

47、際調(diào)用函數(shù)時(shí)所給定的常 量、變量或表達(dá)式,且必須有確定的值。例如: int a5 = 7, 9, 6, 3, 4; sum(a0, 6); 或 sum(a0*a1, a2+a3); 等都是合法的調(diào)用。需要注意的是:實(shí)參與形參的個(gè)數(shù)應(yīng)相等,類型應(yīng)一致,且 按順序?qū)?yīng),一一傳遞數(shù)據(jù)。 C+中,調(diào)用一個(gè)函數(shù)的方式可以有很多,例如: sum(3, 4);/ A int c = 2 * sum(4,5);/ B c = sum(c, sum(c,4);/ C) 其中,A是將函數(shù)作為一個(gè)語句,不使用返回值,只要求函數(shù)完成一定的操作; B把函數(shù)作為表達(dá)式的一部分,將返回值參與運(yùn)算,結(jié)果c = 18;C是將函

48、數(shù)作為 函數(shù)的實(shí)參,等價(jià)于“c = sum(18, sum(18,4);”,執(zhí)行sum(18,4)后,等價(jià)于“c = sum(18,22) ;”,最后結(jié)果為c = 40。,1.5.2 函數(shù)的參數(shù)傳遞,例Ex_SwapValue 交換函數(shù)兩個(gè)參數(shù)的值。 #include void swap(float x, float y) float temp; temp = x; x = y; y = temp; coutx = x, y = yn; void main() float a = 20, b = 40; couta = a, b = bn; swap(a, b); couta = a, b =

49、 bn; 運(yùn)行結(jié)果為:,1.5.3 作用域和存儲類型,1. 作用域 在一個(gè)程序文件中,C+語言的作用域共有5種:塊作用域、函數(shù)原型作用域、函數(shù)作用 域、類作用域和文件作用域。其中,類作用域?qū)⒃诘?章介紹,下面介紹其他幾種。 (1) 塊作用域。這里的塊就是前面已提到過的塊語句(復(fù)合語句)。在塊中聲明的標(biāo)識符,其 作用域從聲明處開始,一直到結(jié)束塊的花括號為止。塊作用域也稱作局部作用域,具有塊 作用域的變量是局部變量。例如: void fun(void)/ 在形參表中指定void,表示沒有形參,void可不要 int a;/ a的作用域起始處 cina; if (a0) a = -a; int b;

50、/ b的作用域起始處 / b的作用域終止處 / a的作用域終止處 代碼中,聲明的局部變量a和b處在不同的塊中。其中變量a是在fun函數(shù)的函數(shù)體塊中,因 此在函數(shù)體這個(gè)范圍內(nèi),該變量是可見的。而b是在if語句塊中聲明的,故它的作用域是從 聲明處開始到if語句結(jié)束處終止。,1.5.3 作用域和存儲類型,1. 作用域 (2) 函數(shù)原型作用域。例如: double max(double x, double y); 和 double max(double, double); 是等價(jià)的。不過,從程序的可讀性考慮,在聲明函數(shù)原型時(shí),為每一個(gè)形參指定 有意義的標(biāo)識符,并且和函數(shù)定義時(shí)的參數(shù)名相同,是一個(gè)非常好

51、的習(xí)慣。 (3) 函數(shù)作用域。 (4) 文件作用域。,1.5.3 作用域和存儲類型,2. 變量的存儲類型 這些存儲類型的聲明是按下列格式進(jìn)行的: ; (1) 自動(dòng)類型(auto)。一般說來,用自動(dòng)存儲類型聲明的變量都是限制在某個(gè)程序范圍內(nèi)使 用的,即為局部變量。從系統(tǒng)角度來說,自動(dòng)存儲類型變量是采用動(dòng)態(tài)分配方式來分配內(nèi) 存空間的。因此,當(dāng)程序執(zhí)行到超出該變量的作用域時(shí),就釋放它所占用的內(nèi)存空間,其 值也隨之消失了。 在C+語言中,聲明一個(gè)自動(dòng)存儲類型的變量是在變量類型前面加上關(guān)鍵字auto,例如: autoint i; 若自動(dòng)存儲類型的變量是在函數(shù)內(nèi)或語句塊中聲明的,則可省略關(guān)鍵字auto,例

52、如: int i; (2) 靜態(tài)類型(static)。靜態(tài)類型變量也是一種局部變量。它和自動(dòng)存儲類型的變量的最大不 同之處在于:靜態(tài)類型變量在內(nèi)存中是以固定地址存放的,它采用靜態(tài)分配方式來分配內(nèi) 存空間的。在這種方式下,只要程序還在繼續(xù)執(zhí)行,靜態(tài)類型變量的值就一直有效,不會(huì) 隨它所在的函數(shù)或語句塊的結(jié)束而消失。,1.5.3 作用域和存儲類型,在C+語言中,聲明一個(gè)靜態(tài)類型的變量是在變量類型前面加上關(guān)鍵字static。例如: 例Ex_Static 使用靜態(tài)類型的局部變量 #include void count() int i = 0; static int j = 0; / 靜態(tài)類型 cout”

53、i =”i”, j = ”j”n”; i+;j+; void main() count(); count(); 運(yùn)行結(jié)果為:,1.5.4 帶默認(rèn)形參值的函數(shù),在C+中,允許在函數(shù)的聲明或定義時(shí)給一個(gè)或多個(gè)參數(shù)指定默認(rèn)值。這樣在調(diào)用時(shí),可以不給出參數(shù),而按指定的默認(rèn)值進(jìn)行工作。例如: void delay(int loops=1000);/ 函數(shù)聲明 void delay(int loops)/ 函數(shù)定義 if (loops=0) return; for (int i=0; iloops; i+);/ 空循環(huán),起延時(shí)作用 這樣,當(dāng)調(diào)用 delay();/ 和delay(1000)等效 時(shí),程序都

54、會(huì)自動(dòng)將loops當(dāng)作成1000的值來進(jìn)行處理。當(dāng)然,也可重新指定相 應(yīng)的參數(shù)值, 例如: delay(2000);,1.5.4 帶默認(rèn)形參值的函數(shù),在設(shè)置函數(shù)的默認(rèn)參數(shù)值時(shí)要注意: (1) 當(dāng)函數(shù)既有聲明又有定義時(shí),不能在函數(shù)定義中指定默認(rèn)參數(shù)。 (2) 當(dāng)一個(gè)函數(shù)中有多個(gè)默認(rèn)參數(shù)時(shí),則形參分布中,默認(rèn)參數(shù)應(yīng)從右到左逐次定 義。在函數(shù)調(diào)用時(shí),系統(tǒng)按從左到右的順序?qū)?shí)參與形參結(jié)合,當(dāng)實(shí)參的數(shù)目不足 時(shí),系統(tǒng)將按同樣的順序用聲明或定義中的默認(rèn)值來補(bǔ)齊所缺少的參數(shù)。例如: 例Ex_Default 一個(gè)設(shè)置多個(gè)默認(rèn)參數(shù)的函數(shù)示例 #include void display(int a, int b=

55、2, int c=3)/ 在函數(shù)的定義中設(shè)置默認(rèn)參數(shù) couta = a, b = b, c = cn; void main() display(1); display(1, 5); display(1, 7, 9); 結(jié)果如下:,1.5.4 帶默認(rèn)形參值的函數(shù),在設(shè)置函數(shù)的默認(rèn)參數(shù)值時(shí)要注意: (3) 默認(rèn)參數(shù)值可以是全局變量、全局常量,甚至是一個(gè)函數(shù)。但不可以是局部 變量,因?yàn)槟J(rèn)參數(shù)的函數(shù)調(diào)用是在編譯時(shí)確定的,而局部變量的值在編譯時(shí)無 法確定。例如: int a = 1; int f1(int); int g1(int x = f1(a);/ 正確,允許默認(rèn)參數(shù)值為函數(shù)值 void f2

56、() int i; void g2(int x = i);/ 錯(cuò)誤,處理g2函數(shù)時(shí),i不可見 ,1.5.5 函數(shù)的遞歸調(diào)用,如果在調(diào)用一個(gè)函數(shù)的過程中出現(xiàn)直接地或間接地調(diào)用函數(shù)本身,這種情況稱為 函數(shù)的“遞歸”調(diào)用,相應(yīng)的函數(shù)稱為“遞歸函數(shù)”。例如: 例Ex_Factorial 編程n的階乘n! f(n) =1當(dāng)n=0時(shí) n*f(n-1)當(dāng)n0時(shí),1.5.5 函數(shù)的遞歸調(diào)用,#include long factorial(int n); void main() coutfactorial(4)endl;/ 結(jié)果為24 long factorial(int n) long result = 0;

57、 if (n = 0) result = 1; else result = n*factorial(n-1); return result; ,1.5.5 函數(shù)的遞歸調(diào)用,例Ex_Factorial 編程n的階乘n! 上述過程可用圖1.5來表示,從中可以看出:遞歸函數(shù)實(shí)際上是同名函數(shù)的多級 調(diào)用。但要注意,遞歸函數(shù)中必須要有結(jié)束遞歸過程的條件,即函數(shù)不再進(jìn)行自 身調(diào)用,否則遞歸會(huì)無限制地進(jìn)行下去。,圖1.5 factorial(4)遞歸函數(shù)執(zhí)行過程,1.5.6 內(nèi)聯(lián)函數(shù),內(nèi)聯(lián)函數(shù)的定義方法是在函數(shù)定義時(shí),在函數(shù)的類型前增加關(guān)鍵字inline。例如: 例Ex_Inline 用內(nèi)聯(lián)函數(shù)實(shí)現(xiàn)求兩個(gè)實(shí)

58、數(shù)的最大值 #include inline float fmax(float x, float y) return xy?x:y; void main() float a, b; coutab; cout最大的數(shù)為:fmax(a,b)n; 使用內(nèi)聯(lián)函數(shù)時(shí),還需要注意的是: (1) 內(nèi)聯(lián)函數(shù)也要遵循定義在前,調(diào)用在后的原則。形參與實(shí)參之間的關(guān)系與一般函數(shù)相同。 (2) 在C+中,需要定義成的內(nèi)聯(lián)函數(shù)不能含有循環(huán)、switch和復(fù)雜嵌套的if語句。 (3) 遞歸函數(shù)是不能被用來做內(nèi)聯(lián)函數(shù)的。 (3) 編譯器是否將用戶定義成的內(nèi)聯(lián)函數(shù)作為真正的內(nèi)聯(lián)函數(shù)處理,由編譯器自行決定。,1.5.7 函數(shù)的重載,函數(shù)重載是指C+允許多個(gè)同名的函數(shù)存在,但同名的各個(gè)函數(shù)的形參必須有區(qū)別:形參的 個(gè)數(shù)不同,或者形參的個(gè)數(shù)相同,但參數(shù)類型有所不同。例如: 例Ex_

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論