C++復(fù)習(xí)(夜肝C++,綜合樓刷夜)

盡管教主說(shuō)除了那些成績(jī)十分不像話(huà)的,經(jīng)過(guò)他的處理基本都能及格。但是我這種上課從來(lái)不聽(tīng)的壞孩子還是很方的有木有!(碼字好累)

一、C++的初步認(rèn)識(shí)

1、對(duì)C語(yǔ)言的增強(qiáng)體現(xiàn)在兩個(gè)方面:

1)在原來(lái)基于過(guò)程機(jī)制的基礎(chǔ)上,對(duì)C語(yǔ)言的功能做了不少補(bǔ)充。
2)增加了面向?qū)ο蟮臋C(jī)制。

2、一個(gè)簡(jiǎn)單的程序

<code>#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<"a+b = "<< a+b<< endl;
return 0;
}</code>

”#include<iostream>“不是C++的語(yǔ)句,而是C++的一個(gè)預(yù)處理指令,行的末尾沒(méi)有分號(hào)。
using namespace std; 的意思是”使用命名空間std“。
cin為輸入流對(duì)象,“>>”為提取運(yùn)算符。
cout為輸出流對(duì)象,“<<”為插入運(yùn)算符,語(yǔ)句以分號(hào)結(jié)束。
endl表示本行結(jié)束。

3、關(guān)于注釋

注釋是給人看的,不是給機(jī)器看的。
注釋可以用”//“來(lái)注釋一行,作簡(jiǎn)短注釋。
也可以以“/+星號(hào)”開(kāi)始“星號(hào)+/”結(jié)束來(lái)注釋幾行,作長(zhǎng)注釋。
給函數(shù)和程序?qū)懽⑨屖且粋€(gè)非常好的習(xí)慣。
ps:課程設(shè)計(jì)由于好多函數(shù)沒(méi)有寫(xiě)注釋?zhuān)诙煸倏吹臅r(shí)候一臉懵逼TvT。

4、C++程序的構(gòu)成和書(shū)寫(xiě)方式

1)一個(gè)C++程序可以由一個(gè)或多個(gè)程序單位構(gòu)成。
2)在一個(gè)程序單位中,包含以下三個(gè)部分
①預(yù)處理指令
②全局聲明部分
③函數(shù),一個(gè)程序有且只能有一個(gè)主函數(shù)。
3)一個(gè)函數(shù)有兩部分構(gòu)成
①函數(shù)首部,包括函數(shù)名、函數(shù)類(lèi)型、函數(shù)屬性、函數(shù)參數(shù)名、參數(shù)類(lèi)型。
e.g:<code>int max(int x,int y)</code>
②函數(shù)體:一般包括局部聲明部分和執(zhí)行部分
4)語(yǔ)句也包括兩類(lèi):
①聲明語(yǔ)句:不引起實(shí)際的操作,屬于非執(zhí)行語(yǔ)句。
②執(zhí)行語(yǔ)句:用來(lái)實(shí)現(xiàn)用戶(hù)的操作。
5)一個(gè)C++程序總是從main函數(shù)開(kāi)始執(zhí)行的。
6)類(lèi)(class)是C++新增加的重要數(shù)據(jù)類(lèi)型(面向?qū)ο螅?br> p.s:寫(xiě)課程設(shè)計(jì)的時(shí)候由于主函數(shù)少了對(duì)象而找了半天的BUG。沒(méi)有對(duì)象,活該單身。

二、數(shù)據(jù)的存儲(chǔ)、表示形式和基本運(yùn)算

1、C++的數(shù)據(jù)類(lèi)型

|數(shù)據(jù)類(lèi)型|||||
| ------------- |:-------------:| -----:|----|
| 基本類(lèi)型| 整型【長(zhǎng)整型:long int】【短整型:short int】【整型:int】| 字符型【char】 |浮點(diǎn)型【單精度型:float】【雙精度型:double】【長(zhǎng)雙精度型:long double】|布爾型【bool】|
| 派生類(lèi)型| 指針類(lèi)型【*】| 枚舉類(lèi)型【enum】|數(shù)組類(lèi)型【[]】|結(jié)構(gòu)體類(lèi)型【struct】共用體類(lèi)型【union】類(lèi)類(lèi)型【class】|
|空類(lèi)型【void】||||||
p.s:markdown的表格還挺智能。。。。如果能加思維導(dǎo)圖就更好了。

2、數(shù)據(jù)類(lèi)型的范圍【★★★★★】

|數(shù)據(jù)類(lèi)型的數(shù)值范圍|||
|-----------|:----------------:|-------:|-------------|
|類(lèi)型|類(lèi)型標(biāo)識(shí)符|字節(jié)數(shù)【★】|
|整型【★】|【signed】int|4|
|無(wú)符號(hào)整數(shù)|【unsigned】int|4|
|短整型|【short】int|2|
|無(wú)符號(hào)短整型|【unsign short】int|2|
|長(zhǎng)整型【★】|【long】int|4|
|無(wú)符號(hào)長(zhǎng)整型|【unsigned long】int|4|
|字符型|【signed】char|1|
|無(wú)符號(hào)字符型|【unsigned】char|1|
|單精度型【★】|float|4|
|雙精度型【★】|double|8|
|長(zhǎng)雙精度型【★】|long double|8|
p.s:刷oj的時(shí)候測(cè)試大數(shù)據(jù)會(huì)出現(xiàn)很多稀奇古怪的結(jié)果,但是程序的邏輯正確,oj卻提示答案錯(cuò)誤,就是因?yàn)槭褂胕nt類(lèi)型發(fā)生了溢出。這時(shí)候往往使用unsigned long或者unsigned long long。

3、常量

1)什么是常量:常量分為兩大類(lèi),數(shù)值型常量和字符型常量。
2)數(shù)值常量:
①常量的類(lèi)型:常量無(wú)unsigned 型。但一個(gè)非負(fù)整數(shù)可以賦值給unsigned型變量。前提是不會(huì)溢出。
②一個(gè)整型常量可以用三種方法表示:
Ⅰ十進(jìn)制整數(shù):如1357,-432.0等。在一個(gè)整數(shù)常量后面加一個(gè)字母l或者L則認(rèn)為是long int 型變量
Ⅱ八進(jìn)制整數(shù):在常數(shù)的開(kāi)頭加一個(gè)0,表示八進(jìn)制整數(shù)如020為(20)8,相當(dāng)于十進(jìn)制的16.
Ⅲ十六進(jìn)制整數(shù):在常數(shù)的開(kāi)頭加一個(gè)數(shù)字0和一個(gè)X或者x。如0X20表示十六禁止的20,即十進(jìn)制的32.
2)浮點(diǎn)數(shù)的表示法
一個(gè)浮點(diǎn)數(shù)可以用兩種不同的形式表示:
①十進(jìn)制小數(shù)形式:由整數(shù)和小數(shù)部分組成,可以省略其中之一但是不能都省略(78. , .06 , .0)。C++在編譯時(shí)將其作為雙精度常量處理,占八個(gè)字節(jié)。如果數(shù)后面加上F或f則按單精度類(lèi)型處理如43F,43f。如果加字母L或l則按長(zhǎng)雙精度處理占12個(gè)字節(jié)【vs中占8字節(jié)】
②指數(shù)形式:如3.14159可寫(xiě)成0.314159×101,3.14159×100,31.4159×10^-1。在程序中表示為0.314159e1,3.14159e0,31.4159e-1。e后的數(shù)表示以10為底的多少次冪。
p.s:這就是浮點(diǎn)的由來(lái)【小數(shù)點(diǎn)浮動(dòng)位置不固定】
4)字符常量
①普通的字符常量如:'a','@','#'等
字符常量只能包括一個(gè)字符'ab'不合法
字符常量區(qū)分大小寫(xiě)
cout<<'a';的結(jié)果是a而不是'a';
②轉(zhuǎn)義字符常量【★★★】

字符形式 含義 ASCII碼
\a 響鈴 7
\n 換行,將當(dāng)前位置移到下一行開(kāi)頭 10
\t 水平制表(跳到下一個(gè)tab位置 9
\b 退格,將當(dāng)前位置移到前一列 8
\r 回車(chē),將當(dāng)前位置移到本行開(kāi)頭 13
\f 換頁(yè),將當(dāng)前位置移到下頁(yè)開(kāi)頭 12
\v 豎向跳格 8
|反斜杠字符”\“ 92
' 單引號(hào)字符 39
" 雙引號(hào)字符 34
\0 空字符 0
\ddd 1-3位八進(jìn)制數(shù)所代表的字符
\xhh 1-2位十六進(jìn)制數(shù)所代表的字符 填點(diǎn)東西避免空虛

5)字符類(lèi)型在內(nèi)存中的存儲(chǔ)形式和使用方法
字符在內(nèi)存中以ASCII碼值存儲(chǔ)。也可以對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算。
e.g:
<code>#include<iostream>
using namespace std;
int main()
{
int i,j;
i='A';
j='B';
cout<< i << j;
return 0;
}
output:65 66
</code>
輸出的結(jié)果為ASCII碼值。
字符數(shù)據(jù)只占一個(gè)字節(jié),只能存放0~255范圍內(nèi)的整數(shù)。
5)字符串常量
用雙撇號(hào)括起來(lái),如"FK U"
【★】"F
K U" 占7個(gè)字節(jié)分別為F,,K,空格,”\0“;
因?yàn)榫幾g系統(tǒng)會(huì)在字符串的末尾加上‘\0’作為結(jié)束的標(biāo)志。
辨析'a'和"a"
<code>
char c//定義一個(gè)字符變量
c='a';//正確
c="a"://錯(cuò)誤,發(fā)生溢出,c只能容納一個(gè)字符。
</code>
6)符號(hào)常量
e.g:
<code>#include<iostream>
using namespace std;
<code>#define PRICE 30//注意這不是語(yǔ)句,末尾無(wú)分號(hào)
int main()
{
int num,total;
num=10;
total=num*PRICE;
cout<<"total= "<< total<< endl;
return 0;
}
</code></code>
預(yù)處理指令表示的是替換,符號(hào)常量雖然有名字但是并不是變量,如果使用賦值語(yǔ)句PRICE=30是錯(cuò)誤的。
好處就是:含義清楚,一次修改能替換所有值。

4、變量

1)注意區(qū)分變量名和變量值,如a=3;則變量名為a,值為3.
2)變量名的規(guī)則:
C++中區(qū)分大小寫(xiě),變量名中不能出現(xiàn)和關(guān)鍵字、系統(tǒng)函數(shù)名和類(lèi)名相同。
命名方法有很多種駝峰,匈牙利命名法等等。
p.s:變量的命名也是十分重要,經(jīng)常睡了一覺(jué)之后會(huì)看不懂自己的命名=v=。
3)定義變量
定義變量的一般形式為:
數(shù)據(jù)類(lèi)型 變量名表列(就是一個(gè)或者多個(gè)變量名)
例如 int I,love,u;
為三個(gè)整型變量I,love和u。
4)C++這么規(guī)定的好處
①如果定義中為int student;
但是在后面執(zhí)行語(yǔ)句中錯(cuò)寫(xiě)為 sutdent=30;
編譯器會(huì)以sutdent沒(méi)有定義報(bào)錯(cuò)。
②方便編譯器分配內(nèi)存。
③便于在便宜時(shí)檢查運(yùn)算是否合法。
5)對(duì)變量賦初值(變量的初始化)
可以在定義時(shí)便初始化 int a=20;
也可以先定義再初始化 int a;
a=20;
6)常變量
定義變量時(shí)加上關(guān)鍵字const,則變量值在運(yùn)行期間不能改變。
const int a=3;
【常變量不能被賦值】
const int a;
a=20;
錯(cuò)誤
常變量又稱(chēng)只讀變量。
7)C++的運(yùn)算符【★】
①算術(shù)運(yùn)算符
"+"" -" "星號(hào)" "/" "%(整除求余) “++”(自加) “--”(自減)
②關(guān)系運(yùn)算符
“<” “==”(等于) “>=”(大于或等于) “<=”(小于或等于) “!=”(不等于)
③邏輯運(yùn)算符
”&&“(邏輯與【且】) “||”(邏輯或) ”!“(邏輯非)
④位運(yùn)算符
“<<”(按位左移) “>>"(按位右移) "&"(按位與) "|"(按位或) "^"(按位異或) "-"(按位取反)
p.s:左移右移可看為乘二除二,一定不要把^當(dāng)成次冪來(lái)用
⑤賦值運(yùn)算符=
⑥條件運(yùn)算符【★】? : (a>b)? a=0:b=0; a是否大于b,若為真則a=0,否則的話(huà)b=0
⑦指針運(yùn)算符【★】<code> * </code>
⑧逗號(hào)運(yùn)算符【★】,
⑨引用運(yùn)算符和地址運(yùn)算符【★】&
⑩求字節(jié)數(shù)運(yùn)算符【★★】sizeof
?強(qiáng)制類(lèi)型轉(zhuǎn)換符((類(lèi)型)或類(lèi)型())
?成員運(yùn)算符 .
?指向成員運(yùn)算符(->)
?下標(biāo)運(yùn)算符([])
?其他運(yùn)算符()
8)基本的算術(shù)運(yùn)算符
整數(shù)和整數(shù)相除的結(jié)果為整數(shù)部分
所以如果想得到浮點(diǎn)數(shù)應(yīng)該將整數(shù)寫(xiě)作浮點(diǎn)形式如1->1.0;
如果基本運(yùn)算中有一個(gè)數(shù)據(jù)為float數(shù)據(jù)那么運(yùn)算結(jié)果為double型,C++運(yùn)算時(shí)將所有float數(shù)據(jù)都作double類(lèi)型處理。
9)算術(shù)表達(dá)式的優(yōu)先級(jí)和結(jié)合性
優(yōu)先級(jí)與小學(xué)數(shù)學(xué)課本優(yōu)先級(jí)類(lèi)似,結(jié)合性為左結(jié)合性。
10)不同類(lèi)型數(shù)據(jù)之間的運(yùn)算
轉(zhuǎn)換成同一類(lèi)型(最長(zhǎng)的那一個(gè))
11)自增自減運(yùn)算【★】
++i(在使用i之前先將i的值加一)
--i (在使用i之前先將i的值減一)
i++(使用i之后將i的值增加一)
i--(使用i之后將i的值減一)
12)類(lèi)型強(qiáng)轉(zhuǎn)
(double)a
(int)(x+y)
(float)(5%3)
打字好累,不解釋了,能看懂的
13)賦值過(guò)程中的類(lèi)型轉(zhuǎn)換
如 int a=7.13;
或 float a;
double b=7.13;
a=b;(在不發(fā)生溢出的前提下進(jìn)行強(qiáng)轉(zhuǎn))。
14)復(fù)合賦值運(yùn)算符
a+=3等價(jià)于a=a+3
x×=y+8等價(jià)于x=x×(y+8)
x%=3等價(jià)于x=x%3
C++可使用一下幾種復(fù)合運(yùn)算符
+= -= ×= /= %= <<= >>= &= ^= |=
15)賦值表達(dá)式
右賦給左,沒(méi)什么好說(shuō)的
16)逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式【★】
表達(dá)式1,表達(dá)式2
逗號(hào)表達(dá)式的求解過(guò)程為:先求解表達(dá)式1,再求解表達(dá)式2,整個(gè)逗號(hào)表達(dá)式的值為表達(dá)式2的值。
如:a=3×5,a×4;結(jié)果為60(沒(méi)有什么異議)
如果再這里面混入復(fù)合賦值運(yùn)算符和自加自減運(yùn)算符就會(huì)有很多人麻爪了
p.s:不知道麻爪是哪里的方言,教主挺喜歡說(shuō)的,有知道的嗎?

三、基于過(guò)程的程序設(shè)計(jì)

1、算法的表示

①自然語(yǔ)言②流程圖③偽代碼④計(jì)算機(jī)語(yǔ)言

2、C++程序結(jié)構(gòu)和C++語(yǔ)句

雖然譚書(shū)寫(xiě)的淺顯易懂但是重復(fù)的部分挺多的,這一部分和前面的重復(fù),唯一有用的部分就是定義了全局聲明。
變量的壽命就是在一對(duì)花括號(hào)之間,全局變量的壽命是最長(zhǎng)的,函數(shù)內(nèi)或者循環(huán)語(yǔ)句內(nèi)的局部變量壽命只在一對(duì)花括號(hào)之間。

3、執(zhí)行語(yǔ)句

①if()else 條件選擇語(yǔ)句
②for()~ 循環(huán)語(yǔ)句
③while()~ 循環(huán)語(yǔ)句
④do~while()循環(huán)語(yǔ)句
⑤continue 結(jié)束本次循環(huán)語(yǔ)句
⑥break中止循環(huán)或者switc case語(yǔ)句
⑦switch多分枝選擇語(yǔ)句
⑧goto轉(zhuǎn)向語(yǔ)句
⑨return 從函數(shù)返回語(yǔ)句
上表中()表示判斷條件,~表示內(nèi)嵌語(yǔ)句
p.s:之前教主安利過(guò)goto之后,就看到國(guó)外大牛曾經(jīng)發(fā)表過(guò)goto有害論,但是goto確實(shí)是一個(gè)很好用的東西,配合條件選擇語(yǔ)句能減少很多代碼量(雖然是直接復(fù)制的)。

4、C++的輸入輸出

C++的輸入輸出是通過(guò)I/O庫(kù)中的輸入輸出函數(shù)實(shí)現(xiàn)的。
C++的輸入輸出是用“流”(stream)的方式來(lái)實(shí)現(xiàn)的。
鍵盤(pán)→“hello”→cin→>>(提取)→計(jì)算機(jī)指定的變量
“hello”→<<(插入)→cout→顯示器
cin和cout是流對(duì)象,包含在stream中。
由此可見(jiàn),C++的輸入輸出是包含在庫(kù)函數(shù)中而if等C++本身提供的語(yǔ)句并不需要頭文件iostream的包含。

5、在標(biāo)準(zhǔn)輸入輸出中使用控制符

控制符 作用
dec 設(shè)置數(shù)值基數(shù)為10
hex 設(shè)置數(shù)值的基數(shù)為16
oct 設(shè)置數(shù)值的基數(shù)為8
setfill(c) 設(shè)置填充字符c,c可以是字符常量和字符變量
setprecision(n) 設(shè)置浮點(diǎn)數(shù)的精度為n位。在以一般十進(jìn)制小數(shù)形式輸出時(shí),n代表有效數(shù)字,在以fixed(固定小數(shù)位數(shù))形式和scientific(指數(shù))形式輸出時(shí),n為小數(shù)位數(shù)
stw(n) 設(shè)置字段寬度為n位
setiosflags(ios::fixed) 設(shè)置浮點(diǎn)數(shù)以固定的小數(shù)位數(shù)顯示
setiosflags(ios::scientific) 設(shè)置浮點(diǎn)數(shù)以科學(xué)記數(shù)法顯示
setiosflags(ios::left) 輸出數(shù)據(jù)左對(duì)齊
setiosflags(ios::right) 輸出數(shù)據(jù)右對(duì)齊
setiosflags(ios::skipws) 忽略前導(dǎo)的空格
setiosflags(ios::uppercase) 數(shù)據(jù)以16進(jìn)制輸出時(shí)字母大寫(xiě)表示
setiosflags(ios::lowercase) 數(shù)據(jù)以16進(jìn)制輸出時(shí)字母以小寫(xiě)表示
setiosflags(ios::showpos) 輸出正數(shù)時(shí)給出“+”號(hào)

p.s:如果要求保留小數(shù)時(shí)不自動(dòng)進(jìn)位,需要化成整數(shù)再保留有效數(shù)字。
使用輸出控制符,需要頭文件iomanip。

6、使用getchar和putchar進(jìn)行輸入輸出

1)putchar函數(shù):字符輸出函數(shù)
輸出字符變量的值。
2)getchar函數(shù):此函數(shù)的作用是從終端輸入一個(gè)字符,此函數(shù)沒(méi)有參數(shù)。
e.g:
<code>#include<iostream>
using namespace std;
int main()
{
char c;
c=getchar();
putchar(c+32);putchar('\n')
return 0;
}</code>
input:a
output:A
注意:cout<<getchar();輸出的為ASCII碼值。

7、使用scanf和printf進(jìn)行輸入輸出

scanf的輸入格式為scanf(格式控制,輸入表列)
printf的輸出格式為printf(格式控制,輸出表列)
p.s:感覺(jué)c的輸入輸出方式挺麻煩的,所以自己很少用,明白什么意思能看懂程序就夠了。

8、關(guān)系運(yùn)算與關(guān)系表達(dá)式

高優(yōu)先級(jí):< <= > >=
低優(yōu)先級(jí):== !=

9、邏輯常量與邏輯變量

邏輯常量只有兩個(gè)fale和true。
邏輯型變量需要用標(biāo)識(shí)bool來(lái)定義,它的值只能是true和false之一。
邏輯型變量又稱(chēng)布爾變量。

10、邏輯運(yùn)算與邏輯表達(dá)式

且或非在上面提到過(guò)。最經(jīng)典的就是閏年的判斷。

11、12、13

省略了,無(wú)非是選擇語(yǔ)句和for、while、do-while循環(huán)。
p.s:有心情了再補(bǔ)上幾個(gè)例子,累了睡覺(jué)。
***---
補(bǔ)上選擇語(yǔ)句和循環(huán)結(jié)構(gòu)的程序:
選擇語(yǔ)句->if
<code>#include<iostream>
using namespace std;
int main()
{
int year;
bool leap;
cout<<"Please enter year"<<endl;
cin>>year;
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
leap=true;
else leap=false;
}
else leap=true;
}
else leap=false;
}
else leap=false;
if(leap) cout<< year<< "is";
else cout<< year << "is not";
cout<< " a leap year"<< endl;
return 0;
}</code>
循環(huán)結(jié)構(gòu)->while
<code>#include<iostream>
using namespace std;
int main()
{
int i=1,sum=0;
while(i<=100)
{
sum=sum+i;
i++;
cout<< "sum= "<< sum<< endl;
}
return 0;
}
output:sum=5050</code>
do-while
<code>#include<iostream>
using namespace std;
int main()
{
int i=1,sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100)
cout<< "sum="<< sum<< endl;
return 0;
}
output:sum=5050</code>
for循環(huán)
<code>#include<iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=0;i<=100;i++)
{
sum=sum+i;
}
cout<< "sum="<< sum<< endl;
return 0;
}
output:sum=5050</code>
continue:結(jié)束本次循環(huán)進(jìn)入下一次循環(huán)。
break:跳出循環(huán)結(jié)構(gòu),執(zhí)行下一個(gè)代碼塊。

四、利用函數(shù)實(shí)現(xiàn)制定功能

1、什么是函數(shù)

函數(shù)(function),原意為功能,那么一個(gè)函數(shù)就是一個(gè)功能。
p.s:在學(xué)習(xí)php的過(guò)程中,php使用function定義函數(shù)。

2、函數(shù)的分類(lèi)

1)系統(tǒng)函數(shù),即庫(kù)函數(shù)
2)用戶(hù)自己定義的函數(shù)
①無(wú)參函數(shù):調(diào)用函數(shù)時(shí)不必給出參數(shù)。
②有參函數(shù):調(diào)用時(shí)要給出參數(shù)。

3、定義函數(shù)的一般形式

類(lèi)型名 函數(shù)名
{
聲明部分
執(zhí)行語(yǔ)句
}

4、形參與實(shí)參【★★★★★】

1)在定義函數(shù)時(shí),函數(shù)名后面括號(hào)中的變量名稱(chēng)為形式參數(shù)。
主函數(shù)中調(diào)用函數(shù)時(shí)被調(diào)用函數(shù)函數(shù)名后面括號(hào)中的參數(shù)為實(shí)際參數(shù)。
2)有關(guān)形參和實(shí)參【★★★】
①未出現(xiàn)函數(shù)調(diào)用時(shí),形式參數(shù)并沒(méi)有被分配內(nèi)存空間,只有發(fā)生函數(shù)調(diào)用時(shí)才被分配內(nèi)存,調(diào)用結(jié)束后所占內(nèi)存被釋放。
②實(shí)參可以是變量常量或表達(dá)式
③定義函數(shù)時(shí)必須在函數(shù)首部指定形參類(lèi)型。
④實(shí)參與實(shí)參應(yīng)該類(lèi)型相同或兼容
⑤實(shí)參對(duì)形參的數(shù)據(jù)傳遞為單向傳遞,只能由實(shí)參傳給形參而不能回傳。即調(diào)用結(jié)束后,實(shí)參的值沒(méi)有發(fā)生變化。|

5、函數(shù)的返回值

通過(guò)函數(shù)的調(diào)用使調(diào)用函數(shù)的語(yǔ)句能得到一個(gè)確定的值,這就是函數(shù)的返回值。
【我的理解就是執(zhí)行函數(shù)之后得到的值,也就是一系列運(yùn)算之后的結(jié)果】
返回值通過(guò)return 語(yǔ)句實(shí)現(xiàn),return后可以是常量、變量、甚至是表達(dá)式。
函數(shù)類(lèi)型決定函數(shù)返回值的類(lèi)型(不符合時(shí)發(fā)生類(lèi)型強(qiáng)轉(zhuǎn))。

6、函數(shù)的調(diào)用

1)函數(shù)在調(diào)用發(fā)生之前要完成函數(shù)的聲明【使編譯器得以正常運(yùn)行】
2)函數(shù)的定義和函數(shù)的聲明不是一回事。
函數(shù)的定義是指函數(shù)功能的確立,包括指定函數(shù)名、函數(shù)類(lèi)型、參數(shù)類(lèi)型以及返回值。
函數(shù)的聲明是把函數(shù)的名字、類(lèi)型、參數(shù)的類(lèi)型和個(gè)數(shù)告知編譯器,讓編譯器對(duì)調(diào)用函數(shù)和定義時(shí)做檢查,避免錯(cuò)誤。
函數(shù)聲明成為函數(shù)原型,作用主要是:根據(jù)函數(shù)原型在程序編譯階段對(duì)調(diào)用函數(shù)的合法性進(jìn)行全面的檢查。
p.s:函數(shù)的定義可以在函數(shù)調(diào)用前和函數(shù)調(diào)用后,如果發(fā)生在函數(shù)調(diào)用之前,則可以省去函數(shù)的聲明。

7、函數(shù)的嵌套調(diào)用

在函數(shù)中套用相同函數(shù);
e.g:很容易就能寫(xiě)出兩個(gè)數(shù)或者三個(gè)數(shù)之間的求max函數(shù),如果面對(duì)四個(gè)甚至五個(gè)數(shù)求最大值問(wèn)題,可以使用函數(shù)套用的方式:
m=max(a,b);
m=max(m,c);
m=max(m,d);

8、函數(shù)的遞歸調(diào)用

1)在調(diào)用函數(shù)的過(guò)程中又出現(xiàn)直接或間接地調(diào)用函數(shù)本身,稱(chēng)為函數(shù)的遞歸。
p.s:函數(shù)遞歸的典型問(wèn)題就是漢諾塔問(wèn)題以及斐波那契數(shù)列問(wèn)題。
直接貼別人的博客地址,里面有詳解。
http://blog.csdn.net/yafei450225664/article/details/8647908

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容