盡管教主說(shuō)除了那些成績(jī)十分不像話的矛物,經(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)有寫注釋魔熏,第二天再看的時(shí)候一臉懵逼TvT衷咽。
4、C++程序的構(gòu)成和書寫方式
1)一個(gè)C++程序可以由一個(gè)或多個(gè)程序單位構(gòu)成蒜绽。
2)在一個(gè)程序單位中镶骗,包含以下三個(gè)部分
①預(yù)處理指令
②全局聲明部分
③函數(shù),一個(gè)程序有且只能有一個(gè)主函數(shù)躲雅。
3)一個(gè)函數(shù)有兩部分構(gòu)成
①函數(shù)首部鼎姊,包括函數(shù)名、函數(shù)類型相赁、函數(shù)屬性相寇、函數(shù)參數(shù)名、參數(shù)類型钮科。
e.g:<code>int max(int x,int y)</code>
②函數(shù)體:一般包括局部聲明部分和執(zhí)行部分
4)語(yǔ)句也包括兩類:
①聲明語(yǔ)句:不引起實(shí)際的操作唤衫,屬于非執(zhí)行語(yǔ)句。
②執(zhí)行語(yǔ)句:用來(lái)實(shí)現(xiàn)用戶的操作绵脯。
5)一個(gè)C++程序總是從main函數(shù)開(kāi)始執(zhí)行的佳励。
6)類(class)是C++新增加的重要數(shù)據(jù)類型(面向?qū)ο螅?br>
p.s:寫課程設(shè)計(jì)的時(shí)候由于主函數(shù)少了對(duì)象而找了半天的BUG。沒(méi)有對(duì)象桨嫁,活該單身植兰。
二、數(shù)據(jù)的存儲(chǔ)璃吧、表示形式和基本運(yùn)算
1楣导、C++的數(shù)據(jù)類型
|數(shù)據(jù)類型|||||
| ------------- |:-------------:| -----:|----|
| 基本類型| 整型【長(zhǎng)整型:long int】【短整型:short int】【整型:int】| 字符型【char】 |浮點(diǎn)型【單精度型:float】【雙精度型:double】【長(zhǎng)雙精度型:long double】|布爾型【bool】|
| 派生類型| 指針類型【*】| 枚舉類型【enum】|數(shù)組類型【[]】|結(jié)構(gòu)體類型【struct】共用體類型【union】類類型【class】|
|空類型【void】||||||
p.s:markdown的表格還挺智能。畜挨。筒繁。噩凹。如果能加思維導(dǎo)圖就更好了。
2毡咏、數(shù)據(jù)類型的范圍【★★★★★】
|數(shù)據(jù)類型的數(shù)值范圍|||
|-----------|:----------------:|-------:|-------------|
|類型|類型標(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類型發(fā)生了溢出堵泽。這時(shí)候往往使用unsigned long或者unsigned long long。
3恢总、常量
1)什么是常量:常量分為兩大類迎罗,數(shù)值型常量和字符型常量。
2)數(shù)值常量:
①常量的類型:常量無(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則按單精度類型處理如43F球恤,43f辜昵。如果加字母L或l則按長(zhǎng)雙精度處理占12個(gè)字節(jié)【vs中占8字節(jié)】
②指數(shù)形式:如3.14159可寫成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ū)分大小寫
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 | 回車,將當(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)字符類型在內(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"
【★】"FK 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àn)和關(guān)鍵字勤讽、系統(tǒng)函數(shù)名和類名相同蟋座。
命名方法有很多種駝峰,匈牙利命名法等等脚牍。
p.s:變量的命名也是十分重要向臀,經(jīng)常睡了一覺(jué)之后會(huì)看不懂自己的命名=v=。
3)定義變量
定義變量的一般形式為:
數(shù)據(jù)類型 變量名表列(就是一個(gè)或者多個(gè)變量名)
例如 int I,love,u;
為三個(gè)整型變量I诸狭,love和u券膀。
4)C++這么規(guī)定的好處
①如果定義中為int student;
但是在后面執(zhí)行語(yǔ)句中錯(cuò)寫為 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ò)誤
常變量又稱只讀變量。
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,否則的話b=0
⑦指針運(yùn)算符【★】<code> * </code>
⑧逗號(hào)運(yùn)算符【★】已卷,
⑨引用運(yùn)算符和地址運(yùn)算符【★】&
⑩求字節(jié)數(shù)運(yùn)算符【★★】sizeof
?強(qiáng)制類型轉(zhuǎn)換符((類型)或類型())
?成員運(yùn)算符 .
?指向成員運(yùn)算符(->)
?下標(biāo)運(yùn)算符([])
?其他運(yùn)算符()
8)基本的算術(shù)運(yùn)算符
整數(shù)和整數(shù)相除的結(jié)果為整數(shù)部分
所以如果想得到浮點(diǎn)數(shù)應(yīng)該將整數(shù)寫作浮點(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類型處理。
9)算術(shù)表達(dá)式的優(yōu)先級(jí)和結(jié)合性
優(yōu)先級(jí)與小學(xué)數(shù)學(xué)課本優(yōu)先級(jí)類似侧蘸,結(jié)合性為左結(jié)合性裁眯。
10)不同類型數(shù)據(jù)之間的運(yùn)算
轉(zhuǎn)換成同一類型(最長(zhǎng)的那一個(gè))
11)自增自減運(yùn)算【★】
++i(在使用i之前先將i的值加一)
--i (在使用i之前先將i的值減一)
i++(使用i之后將i的值增加一)
i--(使用i之后將i的值減一)
12)類型強(qiáng)轉(zhuǎn)
(double)a
(int)(x+y)
(float)(5%3)
打字好累,不解釋了讳癌,能看懂的
13)賦值過(guò)程中的類型轉(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ǔ)句
雖然譚書寫的淺顯易懂但是重復(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)的。
鍵盤→“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í)字母大寫表示 |
setiosflags(ios::lowercase) | 數(shù)據(jù)以16進(jìn)制輸出時(shí)字母以小寫表示 |
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之一慕淡。
邏輯型變量又稱布爾變量背伴。
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ù)的分類
1)系統(tǒng)函數(shù)谐鼎,即庫(kù)函數(shù)
2)用戶自己定義的函數(shù)
①無(wú)參函數(shù):調(diào)用函數(shù)時(shí)不必給出參數(shù)舰蟆。
②有參函數(shù):調(diào)用時(shí)要給出參數(shù)。
3狸棍、定義函數(shù)的一般形式
類型名 函數(shù)名
{
聲明部分
執(zhí)行語(yǔ)句
}
4身害、形參與實(shí)參【★★★★★】
1)在定義函數(shù)時(shí),函數(shù)名后面括號(hào)中的變量名稱為形式參數(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ù)首部指定形參類型。
④實(shí)參與實(shí)參應(yīng)該類型相同或兼容
⑤實(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ù)類型決定函數(shù)返回值的類型(不符合時(shí)發(fā)生類型強(qiáng)轉(zhuǎn))肪凛。
6堰汉、函數(shù)的調(diào)用
1)函數(shù)在調(diào)用發(fā)生之前要完成函數(shù)的聲明【使編譯器得以正常運(yùn)行】
2)函數(shù)的定義和函數(shù)的聲明不是一回事。
函數(shù)的定義是指函數(shù)功能的確立伟墙,包括指定函數(shù)名翘鸭、函數(shù)類型、參數(shù)類型以及返回值戳葵。
函數(shù)的聲明是把函數(shù)的名字就乓、類型、參數(shù)的類型和個(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:很容易就能寫出兩個(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ù)本身惯吕,稱為函數(shù)的遞歸。
p.s:函數(shù)遞歸的典型問(wèn)題就是漢諾塔問(wèn)題以及斐波那契數(shù)列問(wèn)題怕午。
直接貼別人的博客地址废登,里面有詳解。
http://blog.csdn.net/yafei450225664/article/details/8647908