C++復(fù)習(xí)知識點(diǎn)_第1頁
C++復(fù)習(xí)知識點(diǎn)_第2頁
C++復(fù)習(xí)知識點(diǎn)_第3頁
C++復(fù)習(xí)知識點(diǎn)_第4頁
C++復(fù)習(xí)知識點(diǎn)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1.變量(variable): 為存儲器中的地址取一個名字。變量,也稱為對象,是數(shù)據(jù)的存放之處 。變量有三個重要屬性:名稱、值、類型 。變量定義就是告訴編譯器變量的名字及該變量中可以存放哪一類數(shù)據(jù)類型的值。(1.1)變量的命名應(yīng)符合規(guī)范。 名稱必須以字母或下劃線的字符開頭。c+語言中,變量名中出現(xiàn)的大寫和小寫字母被看作是不同的字符,因此abc,abc,abc是三個獨(dú)立的變量名。(1.2) 名稱中的其它字符必須是字母、數(shù)字或下劃線,不得使用空格和其它特殊符號。(1.3) 名稱不可以是系統(tǒng)的保留詞,如:int, double, for, return等,它們在c+語言中有特殊用途。(1.4) 變量

2、名應(yīng)使讀者易于明白其存儲的值是什么,做到“見名知意”。(1.5) c+沒有規(guī)定過變量名的長度,較長的可用下劃線連接。如num_of_person2. c+中變量定義的格式: 類型名 變量名1,變量名2,變量名n ; 如:int num1, num2;(2.1)在c+中,每個變量在使用前必須被定義,以便編譯器檢查變量使用的合法性。變量定義只是給變量分配相應(yīng)的空間。(2.2)c+允許在定義變量的同時給變量賦初值。變量未被賦值前,值為未知格式: 類型名 變量名 = 初值;或者:類型名 變量名(初值); 如:int count = 0; 或 int count(0); 都是定義整型變量count,并為

3、它賦初值0??梢越o被定義的變量中的一部分變量賦初值,如:int sum = 0, count = 0, num;(2.3)一旦定義了一個變量,可以將一個常量賦給該變量。變量賦值過程是“覆蓋”過程,用新值去替換舊值 如 int a; a=123; 或 a = 0x123; 都是正確的 (2.4)在c+中, 定義變量時沒有賦初值,然后直接引用該變量是危險的! 3. 數(shù)據(jù)類型(data type):數(shù)據(jù)的編碼方式、值域和可執(zhí)行的操作。數(shù)據(jù)類型包括兩個方面:數(shù)據(jù)的取值范圍、可用的操作。c/c+中的數(shù)據(jù)類型分為兩大類:基本數(shù)據(jù)類型:整型、浮點(diǎn)型、字符型和布爾型構(gòu)造數(shù)據(jù)類型:字符串、數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉

4、(3.1)整型(int):以補(bǔ)碼形式存儲,在vc中也是如此。可執(zhí)行傳統(tǒng)的算術(shù)運(yùn)算和比較運(yùn)算。整型數(shù)的表示范圍:由各個編譯器指定。整型數(shù)有三種存儲方式,在vc中占用的空間如下所示:基本型 int: 4 byte (pc) 231(2311) 長整型long: long / long int 4 byte (pc) 231(2311) 短整型 short : 2 byte (pc) -215(2151)(3.1.1)整數(shù)運(yùn)算時要注意數(shù)據(jù)的表示范圍。如整數(shù)用兩個字節(jié)表示,正整數(shù) 32767 加 1 的結(jié)果為 -32768。這稱為整數(shù)運(yùn)算的溢出,系統(tǒng)不檢查這樣的錯誤,程序員必須自己保證程序中不出現(xiàn)這樣

5、的錯誤。(3.1.2)在某些應(yīng)用中,不可能出現(xiàn)負(fù)數(shù),則整型數(shù)中有一半的數(shù)值范圍是被浪費(fèi)的。因此在c/c+中可以將所有的數(shù)都看成正整數(shù),稱為無符號數(shù)。無符號數(shù)的定義:在各種整數(shù)類型前加上關(guān)鍵詞unsigned,變成unsigned int, unsigned short, unsigned long unsigned int 0232-1 unsigned short 065535 unsigned long 0232-1(3.2) 實(shí)型:以浮點(diǎn)表示,操作類似于整型,浮點(diǎn)數(shù)無法精確表示。(3.2.1)浮點(diǎn)類型的分類:單精度 float: 占用4字節(jié),3字節(jié)尾數(shù),1字節(jié)指數(shù), 精確度7位 范圍10

6、381038 雙精度 double:占用8字節(jié), 5字節(jié)尾數(shù), 3字節(jié)指數(shù), 精確度1516位,范圍1030710308 (3.3)字符型(char):存放一個字母或符號,占一個字節(jié),存放的是字符的內(nèi)碼??蓤?zhí)行比較、連接等運(yùn)算。具有雙重屬性:整數(shù)屬性和字符屬性,整數(shù)屬性:字符類型即單字節(jié)的整數(shù)類,字符屬性:數(shù)據(jù)值即為相應(yīng)字符的 ascii 碼。字符類型名:char??煞譃榭纱蛴∽址盒懽帜浮⒋髮懽帜?、數(shù)字、標(biāo)點(diǎn)符號、空格等;非打印字符:換行和報警字符或響鈴 等控制字符(3.3.1) pc機(jī)中都用ascii碼表示,特性:數(shù)字0到9是順序存放的,字母被分成二段:大寫的和小寫的。大寫字母是連續(xù)的,

7、小寫字母也是連續(xù)的(3.3.2)一些非打印和難以打印的字符需要用轉(zhuǎn)義序列(escape sequeace)表示。反斜杠符號 稱為轉(zhuǎn)義字符(escape character)。如換行符寫為n ,表示換行。雖然它由兩個字符和n來描述,但它表示一個ascii字符。警告字符a 可以表示成:007,07,7。雙引號的單字符表示:可以寫”,也可以寫”。 ddd 表示 1到3位八進(jìn)制數(shù)代表的字符。xhh 表示 1到2位十六進(jìn)制數(shù)代表的字符。t 表示水平制表。 表示反斜杠(3.4)布爾型(bool): 只有“真”、“假”兩個值??蓤?zhí)行判斷運(yùn)算。如 bool flag=true;(3.5)字符串(string)

8、:是類類型,用雙引號“”表示,可執(zhí)行字符串比較,連接應(yīng)用時要加 #include 如 string str= “dfhdsf”; 內(nèi)部用0表字符串的結(jié)束(3.6)sizeof 運(yùn)算符用來了解某一類型或某一表達(dá)式占用的內(nèi)存量。sizeof 運(yùn)算符的用法: sizeof(類型名) 或 sizeof(表達(dá)式) 如:sizeof(float) :表示float類型的變量占用的內(nèi)存量。sizeof(a+15) :表示表達(dá)式 a+15 的計(jì)算結(jié)果所占的內(nèi)存量。 檢查字符串的長度用strlen( ),如strlen(“asdfld”);4.常量:值的直接表示。如1、3、1.57、a等,又稱直接量。(4.1)

9、 整型常量可用十進(jìn)制、八進(jìn)制和十六進(jìn)制表示:如十進(jìn)制: 123, -234;八進(jìn)制: 0123 十六進(jìn)制:0x123, 0x3a2f(4.2)浮點(diǎn)數(shù)常量有兩種表示法:(1)十進(jìn)制表示:1.23 , 3.14; (2)科學(xué)計(jì)數(shù)法:尾數(shù)e指數(shù) 123e2=12300 2.25e-3=0.00225 ; 注意:尾數(shù)不能為空,指數(shù)必須為整數(shù) (4.3)字符常量:a, s, 2等用一對單引號括起來的數(shù)據(jù)。字符串常量用雙引號(4.4)命名常量:為值指定一個描述性的文字,增加程序的可讀性。在c+語言中,用const修飾,如 const double pi =3.14; 見 pi即知3.14。注意一般變量名需

10、大寫,如pi。5.算術(shù)運(yùn)算符:+(加) -(減) *(乘) / (求商) %(求余)(5.1)“-”可為二元運(yùn)算符,也可為一元運(yùn)算符,其余所有的算術(shù)運(yùn)算符都是二元運(yùn)算符。(5.2)優(yōu)先級:高 * / %, 低 + -(5.3)整型與整型數(shù)運(yùn)算,結(jié)果為整型,如 5 / 2 = 2 ;整型與浮點(diǎn)數(shù)運(yùn)算,結(jié)果為浮點(diǎn)數(shù),如5 / 2.0 = 2.5 ;字符與整型數(shù)運(yùn)算,結(jié)果為整型;字符與浮點(diǎn)數(shù)運(yùn)算,結(jié)果為浮點(diǎn)數(shù)。浮點(diǎn)數(shù)與浮點(diǎn)數(shù)運(yùn)算,結(jié)果為浮點(diǎn)數(shù)。6.關(guān)系運(yùn)算符: , =, =, =, , != (6.1) 優(yōu)先級:高于賦值運(yùn)算符,低于算術(shù)運(yùn)算符。關(guān)系運(yùn)算符內(nèi)部:=和 !=較低(6.2)關(guān)系表達(dá)式:用關(guān)

11、系運(yùn)算符將二個表達(dá)式連接起來稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的結(jié)果是 true 或 false?!暗扔凇边\(yùn)算符是由兩個等號組成。常見的錯誤是在比較相等時用一個等號。=(相等),=(賦值)7. 邏輯運(yùn)算符 :& (and) | (or) ! (not) (7.1)優(yōu)先級: ! 高于 關(guān)系運(yùn)算符 高于 & 高于|(7.2)邏輯表達(dá)式:由邏輯運(yùn)算符連接起來的表達(dá)式,其結(jié)果為“真(true)”或“假(false)”邏輯表達(dá)式在執(zhí)行時,先處理左邊。如左邊已能決定此邏輯表達(dá)式的結(jié)果,則右邊不執(zhí)行。因此,在& 邏輯表達(dá)式中,應(yīng)把false可能性較大的條件放在左邊,在|表達(dá)式中,應(yīng)把true可能性較大的條件放在左邊

12、,這樣可以減少程序執(zhí)行的時間8賦值運(yùn)算符:= 的優(yōu)先級比算術(shù)運(yùn)算符低(8.1)賦值語句: 把一個值賦給一個變量。如x = y + z; x = 3.14; 賦值語句的左邊是變量,右邊是表達(dá)式。(8.2)賦值表達(dá)式格式: = 如x = x + 2。作用:將右邊的表達(dá)式的值存入左邊的變量,整個表達(dá)式的值是右邊的表達(dá)式的結(jié)果。賦值運(yùn)算符是右結(jié)合的(8.3)左值(lvalue): 在c+中,能出現(xiàn)在賦值運(yùn)算符左邊的表達(dá)式稱為左值右值(rvalue):賦值運(yùn)算符右邊的表達(dá)式的值(8.4)賦值語句:賦值表達(dá)式后面加上分號。(8.5)將賦值表達(dá)式作為更大的表達(dá)式的一部分 。如:a = (x = 6) + (

13、y = 7) 等價于分別將x 和 y 的值設(shè)為6 和 7,并將6和7相加,結(jié)果存于變量a (8.6)其他運(yùn)算符與賦值運(yùn)算符結(jié)合的運(yùn)算符稱為復(fù)合賦值運(yùn)算符。格式:變量 op= 表達(dá)式; 等價于:變量 = 變量 op 表達(dá)式;常用的復(fù)合賦值運(yùn)算符有:+=, =,*=,/=,%= 如: balance += deposit; balance -= surcharge; x /= 10; salary *=2; (8.7)賦值和運(yùn)算時的自動類型轉(zhuǎn)換,在進(jìn)行賦值操作時,會發(fā)生類型轉(zhuǎn)換,將取范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的,如果大類型的值在小類型能容納的范圍之內(nèi),則平安無事強(qiáng)制類型轉(zhuǎn)

14、換: (類型名)(表達(dá)式);或類型名 (表達(dá)式);如z = (double)x / y; 靜態(tài)轉(zhuǎn)換(static_cast):用于編譯器隱式執(zhí)行的任何類型轉(zhuǎn)換 格式:轉(zhuǎn)換類型 (表達(dá)式) 如 z = static_cast(x) / y;v 單個分號組成的語句成為空語句v 用 括起來的一組語句稱為復(fù)合語句。在邏輯上看成一個語句。v 復(fù)合語句可以放在任何單語句出現(xiàn)的地方。v 在復(fù)合語句中可以定義變量,但必須定義在最前面。v 逗號表達(dá)式語句格式:表達(dá)式1,表達(dá)式2,,表達(dá)式n v 逗號運(yùn)算符的優(yōu)先級是所有運(yùn)算符中最低的 如a的初值為0,則表達(dá)式 a += 1, a += 2, a += 3, a

15、+= 4, a += 5的結(jié)果為 15 v 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值)v 后置 i+, i- (先使用i值,再執(zhí)行i+1或i-1)9. 控制語句: 改變程序中語句的執(zhí)行次序。(9.1)if語句:兩個分支:條件測試為true時所執(zhí)行的程序塊叫做then子句,條件為false時執(zhí)行的語句叫做else子句。 格式( 1 ) if (條件測試) 語句;即else語句可省略 格式(2) if (條件測試) 語句1;else 語句2; eg. if (grade = 60) cout = 60) cout “passed”; else cout = 90) cout = 80

16、) cout = 70) cout = 60) cout “d”; else cout ”e”;(9.2)條件語句使用注意條件的結(jié)果值應(yīng)該是 true 或 false,它們是c+中bool類型的值條件可為任意表達(dá)式,不一定是關(guān)系表達(dá)式。0 為false,非 0 為true。if 語句可以沒有else子句。合理的縮排。if語句的then子句和else子句含有if語句,稱為if語句的嵌套。eg if (x 100) if (x 90) 語句1;else if (x80) 語句2; else 語句3; else 語句4; 歧義性:如最后一個else跟哪個if 配對.。eg if (y != 0) i

17、f (x != 0) result = x / y; else cout“error :y = 0” y ? x :y;執(zhí)行過程:首先計(jì)算條件值。如果條件結(jié)果為true,則計(jì)算表達(dá)式1的值,并將它作為整個表達(dá)式的值。如果條件結(jié)果為false,則整個表達(dá)式的值為表達(dá)式2的值。(9.3) switch case語句:又稱開關(guān)語句。switch (表達(dá)式) case 常量表達(dá)式1:語句1;break; case 常量表達(dá)式2:語句2 ;break; case 常量表達(dá)式n:語句n ;break; default:語句n+1; 使用注意:表達(dá)式應(yīng)該是常量表達(dá)式,一般為整型表達(dá)式,字符case后跟bre

18、ak表示結(jié)束switch語句,否則一直執(zhí)行,直到遇到break或語句結(jié)尾。case與default無順序要求,但一般default 在最后。default表示除case 標(biāo)號以外的其他情況。10.循環(huán)語句:一個完整的循環(huán)結(jié)構(gòu)一般由四部分組成: 循環(huán)體、循環(huán)控制條件、循環(huán)變量的初始化、循環(huán)變量的增值 其中,循環(huán)體是需要重復(fù)執(zhí)行的操作序列;循環(huán)控制條件是重復(fù)執(zhí)行循環(huán)體所需的條件,即當(dāng)條件成立時執(zhí)行循環(huán)體,否則結(jié)束循環(huán);循環(huán)變量是決定循環(huán)條件是否成立的變量;循環(huán)變量的增值反映了循環(huán)變量的改變規(guī)律,它使循環(huán)變量的值向著使循環(huán)結(jié)束的方向改變;循環(huán)變量的初始化是指在進(jìn)入循環(huán)前,給循環(huán)變量賦初值,否則首次進(jìn)

19、入循環(huán)時,無法確定循環(huán)控制條件是否成立。(10.1)for 語句:主要用于計(jì)數(shù)循環(huán)v 格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句;or語句快;可以理解為:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 符合循環(huán)條件時的執(zhí)行語句v 循環(huán)體可以是復(fù)合語句或空語句。v 循環(huán)里所有語句的一次完全執(zhí)行稱為一個循環(huán)周期。 v 執(zhí)行過程:先執(zhí)行表達(dá)式1,再執(zhí)行判斷表達(dá)式2,如果為true,執(zhí)行一次循環(huán)體(即一個循環(huán)周期),接著執(zhí)行表達(dá)式3,然后重新執(zhí)行判斷表達(dá)式2,若為true,又執(zhí)行一次循環(huán)體,重復(fù)直至判斷表達(dá)式2為false,,最后跳出整個循環(huán)。若開始執(zhí)行條件表示2為false, 循環(huán)體一次也

20、不執(zhí)行。v for循環(huán)的三個表達(dá)式可以是任意表達(dá)式。三個表達(dá)式都是可選的。v 如果循環(huán)不需要任何初始化工作,則表達(dá)式1可以缺省。如循環(huán)前需要做多個初始化工作,可以將多個初始化工作組合成一個逗號表達(dá)式,作為表達(dá)式1。如for (i=1, s=0; i=10; +i) s+=i; v 表達(dá)式2也不一定是關(guān)系表達(dá)式。它可以是邏輯表達(dá)式,甚至可以是算術(shù)表達(dá)式。當(dāng)表達(dá)式2是算術(shù)表達(dá)式時,只要表達(dá)式的值為非0,就執(zhí)行循環(huán)體,表達(dá)式的值為0時退出循環(huán)。v 如果表達(dá)式2省略,即不判斷循環(huán)條件,循環(huán)將無終止地進(jìn)行下去。無終止的循環(huán)稱為“死循環(huán)” ,最簡單的死循環(huán)是 for ( ;); v 表達(dá)式3也可以是任何表

21、達(dá)式,一般為賦值表達(dá)式或逗號表達(dá)式。表達(dá)式3是在每個循環(huán)周期結(jié)束后對循環(huán)變量的修正。表達(dá)式3也可以省略,此時做完循環(huán)體后直接執(zhí)行表達(dá)式2。 如從1加到100,可以寫為 s=0; for (i=1; i=100; ) s+=i, i+; 或 s=0; for (i=1; i=100; s+=i, i+) ;v 將一個for循環(huán)嵌入到另一個for循環(huán)中 ,內(nèi)層的for循環(huán)在外層循環(huán)的每一個周期中都將執(zhí)行它的所有的周期 ,每個for循環(huán)都要有一個自己的循環(huán)變量以避免循環(huán)變量間的互相干擾 。其它循環(huán)嵌套類似執(zhí)行。(10.2)while語句: 與for循環(huán)等價,可相互代替。v 格式:while(表達(dá)式)

22、 語句;or 語句塊;v 執(zhí)行過程:先計(jì)算出條件表達(dá)式的值。如果是false,循環(huán)終止;如果是true,整個循環(huán)體將被執(zhí)行,而后又回到while語句的第一行,再次對條件進(jìn)行檢查,若為true,接著執(zhí)行循環(huán)體,重復(fù)直到條件為false,,跳出整個循環(huán)。v 用途:用于循環(huán)次數(shù)不定的循環(huán)。循環(huán)是否結(jié)束取決于某一個變量的值(標(biāo)記控制重復(fù))v 在for和while語句之后一般沒有分號,有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體)(10.3) do- while語句v 格式: do語句;or 語句塊; while (表達(dá)式);v 執(zhí)行過程:首先執(zhí)行語句,然后判斷表達(dá)式的值。如果表達(dá)式為0,繼續(xù)向下執(zhí)行,

23、否則,再次執(zhí)行語句,再次判斷表達(dá)式的值v 用途:用于至少執(zhí)行一次的循環(huán)。注意后面有分號;11跳轉(zhuǎn)語句:v break語句:跳出整個循環(huán)或switch語句。若有多重循環(huán),跳出含break最近的循環(huán)體。v continue語句:跳出當(dāng)前本次循環(huán),接著判斷是否執(zhí)行下次循環(huán)周期。12 幾種典型的循環(huán)。注意格式及應(yīng)用v 輸入驗(yàn)證循環(huán):以下兩種等價,右邊一個常用cout 請輸入半徑:; /提示輸入 do cout radius; cin radius; while ( radius 0) / 當(dāng)radius 0 while(radius 0) / 當(dāng) cout 請輸入半徑:; radius 0cinrad

24、ius;, area = pi * radius * radius ; area = pi * radius * radius ; v 哨兵循環(huán) 以下四個等價 ,后面兩個常用cout num; cout num; sum += num; /處理數(shù)據(jù) sum += num; cout num; 不等于哨兵值時,繼續(xù)輸入 while(true) / 或while (1) for ( ; ; ) cout 輸入一個正整數(shù):;/提示用戶并讀入數(shù)據(jù) cout num; cin num; if (num = -1) break; / if (num=標(biāo)志) 跳出; if (num = -1) break;

25、 sum += num; /處理數(shù)據(jù) sum += num; v 查詢循環(huán) 累加循環(huán) p=0;char ans; /用于用戶響應(yīng) for(int i=1;i=n;i+) do cout radius; area = pi * radius * radius ; 累乘循環(huán) : p=1 cout area = area endl; for(int i=1;i=n;i+) cout do you again?ans; /詢問輸入 while(ans = y| ans = y); /詢問循環(huán)v 編譯(compiler):將高級語言的程序翻譯成機(jī)器語言,分為解釋執(zhí)行,編譯執(zhí)行v 連接(link):將目標(biāo)

26、程序與已有的其它目標(biāo)程序連接起來,產(chǎn)生一個可執(zhí)行的程序v 輸出流是傳給顯示器的數(shù)據(jù)流,將變量或表達(dá)式的內(nèi)容顯示在顯示器上 格式 輸出一個變量的值:cout a; 輸出多個變量的值:cout a b c; 輸出表達(dá)式的結(jié)果:cout “hello worldn” endl 上述情況的組合: cout a + b = a+b 變量1 變量2 變量n; 如 cin a;當(dāng)程序執(zhí)行到cin時會停下來等待用戶的輸入,后面一定是變量名,不可加引號 用戶可以輸入數(shù)據(jù),用回車()結(jié)束。 當(dāng)有多個輸入數(shù)據(jù)時,一般用空白字符(空格、制表符和回車)分隔。 如:a為整型,d為double,則對應(yīng)于cin a d,用戶

27、的輸入可以為12 13.2 or 12(tab鍵)13.2 or 1213.2 12.。函數(shù)v 過程單元是程序的基本單位。在過程化的語言中,過程單元就是程序中某個模塊的表示。在面向?qū)ο蟮恼Z言中,過程單元說明對象對各種事件是如何響應(yīng)的。v 過程單元分為:過程 (procedure),函數(shù) (function)v 執(zhí)行過程單元稱為調(diào)用(calling),過程單元執(zhí)行完后返回到調(diào)用者v 主要技術(shù):自頂向下、逐步求精,采用單入口、單出口的控制結(jié)構(gòu)。v 函數(shù)是一系列獨(dú)立的程序步驟,這些程序步驟集合在一起,并賦予一個名字v 每個程序都必須有一個名為main的函數(shù),它是程序的入口。主程序由一個或多個函數(shù)組成

28、v 程序主體(主函數(shù)main():主要包含如下模塊:(definition input-proocess-ouput)(1)變量定義:為程序中的數(shù)據(jù)準(zhǔn)備存儲空間 ( declaration or definition)(2)輸入階段:接受所需輸入的信息。它由兩部分組成:顯示提示信息和接收輸入(input)(3)計(jì)算階段:完成所需的計(jì)算(process)(4)輸出階段:輸出計(jì)算的結(jié)果(output)v 函數(shù)的主要構(gòu)成:函數(shù)聲明,函數(shù)定義,函數(shù)調(diào)用v 可以把函數(shù)想象成數(shù)學(xué)中的函數(shù)。如f(x)=2x 參數(shù)表是一組自變量x,返回類型是函數(shù)值的類型; 函數(shù)聲明就是設(shè)函數(shù)為f(x), 函數(shù)定義(函數(shù)頭+函

29、數(shù)體)就是函數(shù)表達(dá)式如2x,函數(shù)調(diào)用就是帶值計(jì)算如f(2)=22。v 函數(shù)聲明:類似于變量聲明,所有函數(shù)在使用前必須被聲明。又稱函數(shù)的原型,功能:說明函數(shù)和外界的交流,反映函數(shù)調(diào)用的全部信息。包括下列內(nèi)容:函數(shù)名,函數(shù)的參數(shù)類型,函數(shù)的返回類型它的形式為: 返回類型 函數(shù)名(參數(shù)表);返回類型:是函數(shù)的輸出值的類型, void 函數(shù)沒有返回值函數(shù)名:是函數(shù)的名字。程序可以通過函數(shù)名執(zhí)行函數(shù)體的語句參數(shù)表:是函數(shù)的輸入, 無參數(shù)列表,可不寫,但是括號必須有。參數(shù)表中的參數(shù)說明之間用“,”分開,每個參數(shù)說明可以是類型,也可以是類型后面再接一個參數(shù)名。如:int max(int, int); int

30、 max(int a, int b); int main( ) v 函數(shù)定義:函數(shù)頭+函數(shù)體,相當(dāng)于一個小程序。函數(shù)頭:說明函數(shù)和外界的交流,與函數(shù)聲明一樣,參數(shù)表要有形參,void除外函數(shù)體: 一系列獨(dú)立的程序步驟;,必須定義在函數(shù)體最前面形式:返回類型 函數(shù)名(參數(shù)表)/函數(shù)頭 code here; /函數(shù)體 eg : int max(int a, int b) /函數(shù)定義 if (a b) return(a); else return(b); v 函數(shù)調(diào)用形式: 函數(shù)名(實(shí)際參數(shù)表);一般出現(xiàn)在主調(diào)函數(shù)中或其他調(diào)用函數(shù)中。 eg. max( x ,y);v 函數(shù)執(zhí)行過程:(1) 在主程序

31、中計(jì)算每個實(shí)際參數(shù)值。(2) 調(diào)用時將實(shí)際參數(shù)的值賦給對應(yīng)的形式參數(shù)。在賦值的過程中完成自動類型轉(zhuǎn)換。(3) 進(jìn)入函數(shù)體依次執(zhí)行函數(shù)體的每個語句,直到遇見return語句或函數(shù)體結(jié)束(4) 計(jì)算return后面的表達(dá)式的值,如果表達(dá)式的值與函數(shù)的返回類型不一致,則完成類型的轉(zhuǎn)換。(5) 用函數(shù)的返回值置換函數(shù),繼續(xù)主程序的執(zhí)行。eg int max(int a, int b); /函數(shù)聲明int main( ) int x, y;cin x y;cout b) return(a); else return(b);v 注意:(1) 形式參數(shù)和實(shí)際參數(shù)的個數(shù)(number)、排列次序(order)

32、、類型(type)要完全相同。 (2) 實(shí)際參數(shù)可以是常量、變量、表達(dá)式,甚至是另一個函數(shù)調(diào)用(3) 傳遞方式:值傳遞,執(zhí)行函數(shù)調(diào)用時,將實(shí)參值傳遞給形參,并替換形參同名的實(shí)體(4) 值傳遞:函數(shù)獲得了主調(diào)程序參數(shù)變量值的拷貝。被調(diào)程序可以改變這些拷貝,但這對主調(diào)程序的環(huán)境沒有影響。(5)請注意:c+中不允許函數(shù)定義嵌套,即在函數(shù)定義中再定義一個函數(shù)是非法的。一個函數(shù)只能定義在別的函數(shù)的外部,函數(shù)定義之間都是平行的,互相獨(dú)立的。例如:下面的代碼在主函數(shù)中非法嵌套了一個f()函數(shù)定義:void main() void f() / 函數(shù)參數(shù)的傳遞比較:1. 按值傳遞以按值傳遞方式進(jìn)行參數(shù)傳遞的過程

33、為:首先計(jì)算出實(shí)參表達(dá)式的值,接著給對應(yīng)的形參變量分配一個存儲空間,該空間的大小等于該形參類型的長度,然后把已求出的實(shí)參表達(dá)式的值一一存入到為形參變量分配的存儲空間中,成為形參變量的初值,供被調(diào)用函數(shù)執(zhí)行時使用。這種傳遞是把實(shí)參表達(dá)式的值傳送給對應(yīng)的形參變量,故稱這種傳遞方式為“按值傳遞”。這種方式被調(diào)用函數(shù)本身不對(主調(diào)函數(shù)中)實(shí)參進(jìn)行操作,也就是說,即使形參的值在函數(shù)中發(fā)生了變化(主調(diào)函數(shù)中)實(shí)參的值也完全不會受到影響,仍為調(diào)用前的值。 例:按值傳遞。 void swap(int,int);/函數(shù)定義void main() int a=3,b=4; couta=a,b=“ bendl; s

34、wap(a,b); /函數(shù)調(diào)用 couta=a,b= b endl; void swap(int x,int y)/函數(shù)定義 int t=x; x=y; y=t; 此程序的運(yùn)行結(jié)果為:a=3,b=4a=3,b=4 2. 地址傳遞 如果在函數(shù)定義時將形參的類型說明成指針,對這樣的函數(shù)進(jìn)行調(diào)用時就需要指定地址值形式的實(shí)參。這時的參數(shù)傳遞方式即為地址傳遞方式。這種地址傳遞與上述的按值傳遞不同,它把實(shí)參的存儲地址傳送給對應(yīng)的形參,從而使得形參指針和實(shí)參指針指向同一個地址。因此,被調(diào)用函數(shù)中對形參指針?biāo)赶虻牡刂分袃?nèi)容的任何改變都會影響到實(shí)參。 例:地址傳遞。 void swap(int *x ,int *y);/函數(shù)聲明void main() int a=3,b=4; couta=a,b=“ bendl; swap(&a,&b);、 couta=a,b=“ bendl; void swap(int *x,int *y) int t=*x; *x=*y; *y=t;此程序的運(yùn)行結(jié)果為:a=3,b=4a=4,b=33. 引用傳遞按值傳遞方式容易理解,但形參值的改變不能對實(shí)參產(chǎn)生影響;地址傳

溫馨提示

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

最新文檔

評論

0/150

提交評論