版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 C+基礎(chǔ)2.1 C+的特點(diǎn)2.2 C+語言的文件擴(kuò)展名2.3 注釋符2.4 名字空間2.5 C+語言的輸入輸出2.6 變量的定義2.7 強(qiáng)制類型轉(zhuǎn)換2.8 動(dòng)態(tài)內(nèi)存的分配與釋放2.9 作用域運(yùn)算符:2.10 引用2.11 const修飾符2.12 字符串2.13 C+語言中函數(shù)的新特性2.1 C+的特點(diǎn) C+語言既保留了C語言的有效性、靈活性、便于移植等全部精華和特點(diǎn),又添加了面向?qū)ο缶幊痰闹С?,具有?qiáng)大的編程功能,可方便地構(gòu)造出模擬現(xiàn)實(shí)問題的實(shí)體和操作;編寫出的程序具有結(jié)構(gòu)清晰、易于擴(kuò)充等優(yōu)良特性,適合于各種應(yīng)用軟件、系統(tǒng)軟件的程序設(shè)計(jì)。用C+編寫的程序可讀性好,生成的代碼質(zhì)量高,運(yùn)
2、行效率僅比匯編語言慢10%20%。2.2 C+語言的文件擴(kuò)展名 為了使編譯器能夠區(qū)別是C語言還是C+語言,C+語言體系規(guī)定用“.cpp”(意即C Plus-Plus)作為C+語言源文件的擴(kuò)展名以區(qū)別于C語言用的“.C”文件擴(kuò)展名。雖然僅差兩個(gè)字母,但編譯時(shí)的處理卻相差甚遠(yuǎn)。 “cpp”的文件擴(kuò)展名與操作系統(tǒng)無關(guān)。與C+語言源文件相關(guān)的頭文件擴(kuò)展名一般仍用“.h”,但有些操作系統(tǒng)也有規(guī)定使用“.hpp”充當(dāng)頭文件擴(kuò)展名的。2.3 注釋符 1. 段注釋: /*/ 2. 單行注釋:/ 當(dāng)只做單行注釋時(shí)便可用“/”符號(hào)表示從此符號(hào)起至行尾均為行注釋內(nèi)容。 3. 程序編譯時(shí)將忽略所有的注釋內(nèi)容。 花括號(hào)
3、括起來的部分稱聲明塊。聲明塊中可以包括:類、變量(帶有初始化)、函數(shù)(帶有定義)等。在域外使用域內(nèi)的成員時(shí),需加上名字空間名作為前綴,后面加上域操作符“:” 。這里添加了名字空間名稱的成員名被稱為限定修飾名。如:ns1:a,ns1:fun1()等等。 最外層的名字空間域稱為全局名字空間域(global namespace scope),即文件域。名字空間域可分層嵌套.使用using指示符可以一次性地使名字空間中所有成員都可以直接被使用。using指示符以關(guān)鍵字using開頭,后面是關(guān)鍵字namespace,然后是名字空間名。 標(biāo)準(zhǔn)C+庫中的所有組件都是在一個(gè)被稱為std的名字空間中聲明和定義的
4、。在采用標(biāo)準(zhǔn)C+的平臺(tái)上使用標(biāo)準(zhǔn)C+庫中的組件,只要寫一個(gè)using指示符: using namespace std; 就可以直接使用標(biāo)準(zhǔn)C+庫中的所有成員。 注意:如果使用了名空間std,則在使用#include編譯預(yù)處理命令包含頭文件時(shí),必須去掉頭文件的擴(kuò)展名.h,否則會(huì)出錯(cuò)。一般一個(gè)C+的老的帶“.h”擴(kuò)展名的庫文件,比如iostream.h,在新標(biāo)準(zhǔn)后的標(biāo)準(zhǔn)庫中都有一個(gè)不帶“.h”擴(kuò)展名的相對(duì)應(yīng),新標(biāo)準(zhǔn)庫中除了好多改進(jìn)之外,還將后者所含的都塞進(jìn)了“std”名字空間中。 cout表達(dá)式1表達(dá)式2表達(dá)式n;說明: 數(shù)據(jù)的輸出格式由系統(tǒng)自動(dòng)決定。 各表達(dá)式可以是任意類型的。#include
5、iostream.hvoid main()int a=2;double b=3.32;char c=A;couta bendl; coutc abcdendl; 1. cout格式控制符(需要記憶)格式控制符說 明示 例語 句結(jié) 果endl輸出換行符cout123endl123123123dec十進(jìn)制表示coutdec123;123hex十六進(jìn)制表示couthex123;7boct八進(jìn)制表示coutoct123;173setw(int n)設(shè)置數(shù)據(jù)輸出的寬度coutasetw(4)b;a b(中間有3個(gè)空格)setfill(int n)設(shè)置填充字符coutsetfill(*)setw(6)12
6、3;*123setprecision(int n)設(shè)置浮點(diǎn)數(shù)輸出的有效數(shù)字位數(shù)coutsetprecision(5)123.456123.46使用格式控制符輸出數(shù)據(jù)#include iostream.h#include iomanip.hvoid main()int x=65;double f=123.456;cout123456789012345endl;coutdecx hexx octxendl;coutxendsxendl;coutfendl;coutsetprecision(4)fendl;coutsetw(12)fendl;coutsetw(12)setfill(#)f變量變量2變
7、量n;說明:數(shù)據(jù)之間用空格、TAB鍵或回車分隔 #include “iostream.h”void main()int a;float b;coutab;couta+b=a+bendl;【例2.1】C+的輸入輸出舉例。#include / 使用名空間std,則必須去掉.h擴(kuò)展名using namespace std; void main() char name10; int age; coutname; coutage; coutname is nameendl; coutage is ageendl;2.6 變量的定義 在C語言中,局部變量說明必須置于可執(zhí)行代碼段之前,不允許局部變量聲明和可
8、執(zhí)行代碼混合在一起。但C+在變量的定義上作了兩種較大的改變,一是允許變量的定義語句可以出現(xiàn)在程序的任何位置,使得局部變量的定義點(diǎn)與使用點(diǎn)不至于離得太遠(yuǎn),增強(qiáng)程序的可讀性,而且也不必在編寫某一程序塊的開始時(shí)就考慮要用到哪些變量;二是允許直接使用結(jié)構(gòu)體名定義變量,這種擴(kuò)展為程序員在編程中提供了不少方便。類似地在C+語言中聯(lián)合名、枚舉名也可在定義后獨(dú)立地作為類型名使用。2.7 強(qiáng)制類型轉(zhuǎn)換格式:(數(shù)據(jù)類型) (表達(dá)式)數(shù)據(jù)類型 (表達(dá)式)通過強(qiáng)制類型轉(zhuǎn)換,得到一個(gè)所需類型的中間值,該中間值被引用后即自動(dòng)釋放。原來表達(dá)式的值類型并未改變。如下列代碼段: int b;float f;f=float(b)
9、; / 此時(shí)變量b仍然為int類型。(2) 強(qiáng)制類型轉(zhuǎn)換符優(yōu)先級(jí)較高,只對(duì)緊隨其后的表達(dá)式起作用,而對(duì)其他部分不起作用。如:表達(dá)式float(i)*f的含義是先將變量i強(qiáng)制類型轉(zhuǎn)換為float類型,然后與變量f運(yùn)算。(3) 強(qiáng)制類型轉(zhuǎn)換應(yīng)當(dāng)用在不做轉(zhuǎn)換將影響表達(dá)式結(jié)果的正確性或精度,或不能完成相應(yīng)運(yùn)算的場(chǎng)合。而對(duì)于系統(tǒng)可以自動(dòng)轉(zhuǎn)換類型的場(chǎng)合,則沒有必要使用。說明:2.8 動(dòng)態(tài)內(nèi)存的分配與釋放1.new運(yùn)算符 指針變量 = new 數(shù)據(jù)類型; new從堆內(nèi)存中為程序分配可以保存某種類型數(shù)據(jù)的一塊內(nèi)存空間,并返回指向該內(nèi)存的首地址,該地址存放于指針變量中。 堆內(nèi)存可以按照要求進(jìn)行分配,程序?qū)?nèi)存的
10、需求量隨時(shí)會(huì)發(fā)生變化,有時(shí)程序在運(yùn)行中可能會(huì)不再需要由new分配的內(nèi)存空間,而且程序還未運(yùn)行結(jié)束,這時(shí)就需要把先前占用的內(nèi)存空間釋放給堆內(nèi)存,以后重新分配,供程序的其它部分使用。#include using namespace std;void main() int *p;p=new int; / 分配內(nèi)存空間*p=5;cout*p;delete p; / 釋放內(nèi)存空間【例2.3】new與delete應(yīng)用舉例。在用new分配內(nèi)存的同時(shí)進(jìn)行初始化。使用形式為:指針變量 = new 數(shù)據(jù)類型(初始值);例如上例中的:p=new int;*p=5;也可寫成:p=new int(5); 指針變量 =
11、new 數(shù)據(jù)類型數(shù)組大??; 此時(shí)指針變量指向第一個(gè)數(shù)組元素的地址。使用new分配數(shù)組時(shí),不能提供初始值。使用new建立的數(shù)組變量也由delete釋放。其形式為: delete 指針變量;或: delete 指針變量; 同樣,也可以用new來為多維數(shù)組分配空間,但是除第一維可以為變量外,其它維數(shù)都必須是常量。 注意: 在使用delete時(shí),不用考慮數(shù)組的維數(shù)。4用new建立數(shù)組類型的變量 可以是變量 有時(shí),并不能保證一定可以從堆內(nèi)存中獲得所需空間,當(dāng)不能成功地分配到所需要的內(nèi)存時(shí),new返回0,即空指針。因此我們可以通過判斷new的返回值是否為0,來得知系統(tǒng)中是否有足夠的空閑內(nèi)存來供程序使用。例
12、如:int *p= new int100;if(p=0) coutcant allocate more memory,terminating. ;coutendl;exit(1); / exit函數(shù)的作用是終止程序運(yùn)行。#include using namespace std;void main() int n; / 定義數(shù)組元素的個(gè)數(shù) int *p; coutn;【例2.4】從堆內(nèi)存中獲取一個(gè)整型數(shù)組,賦值后并打印出來。if(p=new intn)=0) / 分配內(nèi)存空間 coutcant allocate more memorying.; coutendl; exit(1); for( i
13、nt i=0;in;i+) pi= i *2;coutNow output the array : endl;for( i=0;in;i+) coutpi ;coutendl;delete p; / 釋放內(nèi)存空間2.9 作用域運(yùn)算符: 通常情況下,如果全局變量與局部變量同名,那么局部變量在其作用域內(nèi)具有較高的優(yōu)先權(quán)。C語言規(guī)定只能在變量的作用域內(nèi)使用該變量,不能使用其他作用域中的變量,可采用C+中提供的作用域運(yùn)算符:,它能指定所需要的作用域。 注意:不能用:訪問函數(shù)中的局部變量。在C+語言中作用域運(yùn)算符:還用來限定類的成員, #include using namespace std;float
14、 a=2.4; / 全局變量void main() int a=8; / 局部變量coutaendl;cout:a=eps) w+=t; t=t*x/(n+); return w; void main() couts1=s(2.0); couts2=s(3.0);couts3=s(1.0,1e-5); 參數(shù)eps取默認(rèn)值1e-6參數(shù)eps的值為1e-5【例】求下面級(jí)數(shù)的部分和。精度為: 默認(rèn)參數(shù)的說明必須出現(xiàn)在函數(shù)調(diào)用之前。若一個(gè)函數(shù)說明已給出參數(shù)的默認(rèn)值,則在函數(shù)定義中不允許再設(shè)置。 要求賦予默認(rèn)值的參數(shù)必須放在形參表列中的最右端。說明:分析下面各例: void fun(int i, int
15、 j, int k, int m=3,int n=4); 假設(shè)函數(shù)調(diào)用語句為: fun(1,2); /錯(cuò)誤,至少應(yīng)有三個(gè)實(shí)參 fun(10,20,30); /正確,m、n取默認(rèn)值 fun(10,20,30,40); /正確,m取40 、n取默認(rèn)值4 fun(10,20,30, ,50); /錯(cuò)誤,只能從左至右匹配2.13.4函數(shù)重載(overload)引例:求不同類型數(shù)據(jù)的絕對(duì)值#include #include void main()int x1=-1; double x2=2.5; long x3=3L; coutabs(x1)endl; coutfabs(x2)endl; coutlab
16、s(x3)endl; 不足:易出錯(cuò)、難記憶函數(shù)重載:一組參數(shù)(個(gè)數(shù)或類型)不同的函數(shù)共用一個(gè)函數(shù)名。不同名函數(shù)實(shí)現(xiàn)同一類的操作#include int abs(int x) return x0?x:-x; double abs(double x) return x0?x:-x; long abs(long x) return x0?x:-x; void main() int x1=1; double x2=2.5; long x3=3L; coutabs(x1)endl; coutabs(x2)endl; coutabs(x3)endl; 一. 參數(shù)類型不同的重載函數(shù)編譯器根據(jù)函數(shù)參數(shù)的類型來
17、確定應(yīng)該調(diào)用哪個(gè)函數(shù)【例】二. 參數(shù)個(gè)數(shù)不同的重載函數(shù)可見:重載使得函數(shù)的使用更加靈活、方便。 它體現(xiàn)了c+對(duì)多態(tài)性的支持一個(gè)名字,多個(gè)入口 。 #include int min(int a,int b) return ab?a:b; int min(int a,int b,int c) int t=min(a,b); return min(t,c);int min(int a,int b,int c,int d) int t1=min(a,b); int t2=min(c,d); return min(t1,t2);void main() coutmin(13,5,4,9)endl; cou
18、tmin(-2,8,0)endl;編譯器根據(jù)調(diào)用語句中實(shí)參的個(gè)數(shù)來確定應(yīng)該調(diào)用哪個(gè)函數(shù)注意:不要同時(shí)使用重載函數(shù)和缺省參數(shù)函數(shù)。C+編譯系統(tǒng)允許為兩個(gè)或兩個(gè)以上的函數(shù)取相同的函數(shù)名,但是形參的個(gè)數(shù)或者形參的類型不應(yīng)相同,編譯系統(tǒng)會(huì)根據(jù)實(shí)參和形參的類型及個(gè)數(shù)的最佳匹配,自動(dòng)確定調(diào)用哪一個(gè)函數(shù),這就是所謂的函數(shù)重載。函數(shù)重載無需特別聲明,只要所定義的函數(shù)與已經(jīng)定義的同名函數(shù)形參形式不完全相同,C+編譯器就認(rèn)為是函數(shù)的重載?!纠?.12】重載函數(shù)應(yīng)用舉例 在使用重載函數(shù)時(shí)要注意: 不可以定義兩個(gè)具有相同名稱、相同參數(shù)類型和相同參數(shù)個(gè)數(shù),只是函數(shù)返回值不同的函數(shù)。int func(int x);flo
19、at func(int x); 如果某個(gè)函數(shù)參數(shù)有缺省值,必須保證其參數(shù)缺省后調(diào)用形式不與其它函數(shù)混淆。int f(int a, float b);void f(int a, float b, int c=0);函數(shù)調(diào)用語句: f(10, 2.0); 具有二義性,既可以調(diào)用第一個(gè)函數(shù),也可以調(diào)用第二個(gè)函數(shù),編譯器不能根據(jù)參數(shù)的形式確定到底調(diào)用哪一個(gè)。2.13.5函數(shù)模板(function template) C+語言中可以使用模板來避免在程序中多次書寫相同的代碼。所謂模板是一種使用無類型參數(shù)來產(chǎn)生一系列函數(shù)或類的機(jī)制。 模板分為函數(shù)模板和類模板,C+提供的函數(shù)模板可以定義一個(gè)對(duì)任何類型變量進(jìn)行
20、操作的函數(shù)。使用函數(shù)模板的方法是先說明函數(shù)模板,然后實(shí)例化成相應(yīng)的模板函數(shù)進(jìn)行調(diào)用執(zhí)行。1.函數(shù)模板函數(shù)模板的一般說明形式如下:template (模板函數(shù)形參表) / 函數(shù)定義體 尖括號(hào)中不能為空,參數(shù)可以有多個(gè),用逗號(hào)分開。模板參數(shù)主要是模板類型參數(shù)。模板類型參數(shù)(template type parameter)代表一種類型,由關(guān)鍵字 class 或 typename后加一個(gè)標(biāo)識(shí)符構(gòu)成,在這里兩個(gè)關(guān)鍵字的意義相同,它們表示后面的參數(shù)名代表一個(gè)基本數(shù)據(jù)類型或用戶定義的類型。#include template T min(T a,T b) return ab?a:b; void main()
21、coutmin(3,5)endl; coutmin(8.5,5.6)endl;定義一個(gè)數(shù)據(jù)類型T使用模板函數(shù)時(shí),模板中的類型參數(shù)T用實(shí)參的類型替換【例】 如果類型形參多于一個(gè),則每個(gè)類型形參都要使用class或typename。中的參數(shù)必須是唯一的,而且中至少出現(xiàn)一次。 如:template,則“T”可以在程序運(yùn)行時(shí)被任何數(shù)據(jù)類型所取代。如有兩個(gè)以上的模板參數(shù)時(shí),使用逗號(hào)分隔,如:“template”。由于模板是專門為函數(shù)安排的,所以模板聲明語句必須置于與其相關(guān)的函數(shù)聲明或定義語句之前。 函數(shù)模板定義不是一個(gè)實(shí)實(shí)在在的函數(shù),編譯系統(tǒng)不為其產(chǎn)生任何執(zhí)行代碼。該定義只是對(duì)函數(shù)的描述,表示它每次能單獨(dú)處理在類型形式參數(shù)表中說明的數(shù)據(jù)類型。【例2.13】編寫一個(gè)對(duì)具有n個(gè)元素的數(shù)組a求最小值的程序,將求最小值的函數(shù)設(shè)計(jì)成函數(shù)模板。分析以下幾種模板函數(shù):template T fun1(T a,int b) /可含有模板參數(shù)表中未給 出的數(shù)據(jù)類型template /模板中可帶有多個(gè)參數(shù) void fun1(T1 a,T2 b,T3 c) template void fun1(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一級(jí)2026年注冊(cè)建筑師之設(shè)計(jì)前期與場(chǎng)地設(shè)計(jì)考試題庫300道附參考答案【綜合題】
- 2026年理財(cái)規(guī)劃師之三級(jí)理財(cái)規(guī)劃師考試題庫500道及完整答案【考點(diǎn)梳理】
- 2025年北京經(jīng)濟(jì)管理職業(yè)學(xué)院輔導(dǎo)員考試參考題庫附答案
- 2026年憲法知識(shí)題庫含答案(能力提升)
- 2026年注冊(cè)土木工程師(水利水電)之專業(yè)基礎(chǔ)知識(shí)考試題庫200道含答案(完整版)
- 2026江蘇蘇州健雄職業(yè)技術(shù)學(xué)院博士高層次人才需求35人筆試考試參考題庫及答案解析
- 2025年杭州職業(yè)技術(shù)大學(xué)輔導(dǎo)員考試筆試真題匯編附答案
- 2026年材料員考試備考題庫帶答案(輕巧奪冠)
- 2026江西國際經(jīng)濟(jì)技術(shù)合作公司招聘面試題及答案
- 2026年心理咨詢師之心理咨詢師基礎(chǔ)知識(shí)考試題庫附答案(精練)
- 幼兒園每日消毒及安全管理操作規(guī)范
- 11.1黨和人民信賴的英雄軍隊(duì)課件-2025-2026學(xué)年統(tǒng)編版道德與法治八年級(jí)上冊(cè)
- 2025年軍隊(duì)文職保管員題庫及答案(可下載)
- 企業(yè)勞動(dòng)用工風(fēng)險(xiǎn)防范操作指南
- DB37-T 5337-2025 建筑隔震減震裝置檢測(cè)技術(shù)規(guī)程
- 立德樹人教育教學(xué)課件
- 餐飲宴會(huì)服務(wù)標(biāo)準(zhǔn)流程全流程管理方案
- 甲方安全技術(shù)交底
- 化療藥物輸注規(guī)范
- 礦山安裝施工方案
- 化工新材料生產(chǎn)線項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論