![CC學(xué)習(xí)范本C特有功能與字串_第1頁](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc391.gif)
![CC學(xué)習(xí)范本C特有功能與字串_第2頁](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc392.gif)
![CC學(xué)習(xí)范本C特有功能與字串_第3頁](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc393.gif)
![CC學(xué)習(xí)范本C特有功能與字串_第4頁](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc394.gif)
![CC學(xué)習(xí)范本C特有功能與字串_第5頁](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
最新C&C++學(xué)習(xí)範(fàn)本第13章C++特有功能與字串本章投影片僅供本書上課教師使用,非經(jīng)同意請(qǐng)勿拷貝或轉(zhuǎn)載13-1inline函式
inline函式是C++新增功能,傳統(tǒng)C所沒有。透過inline函式可加快程式執(zhí)行速度。C++編譯時(shí),將inline函式內(nèi)的敘述直接取代
該函式,會(huì)增加程式長(zhǎng)度,但執(zhí)行時(shí)可直接執(zhí)
行該敘述省掉進(jìn)出函式時(shí)間。語法:
inlinereturn_typefunction_name(argument_list)P13-2inline函式寫法和一般函式一樣,必須在使用前
先宣告,且必須在宣告或定義函式最前面加上inline。若inline函式內(nèi)的敘述太長(zhǎng)或是遞迴函式,
編譯器會(huì)視為一般函式處理。使用inline函式由於有argument_list(引數(shù)串列)
可對(duì)傳入資料的資料型態(tài)檢查是否有錯(cuò)誤;
使用define巨集則無法對(duì)資料型態(tài)做檢查。
return_type是指函式傳回結(jié)果的資料型態(tài)。function_name代表函式名稱。P13-2inlineintgetsum(int,int);
//宣告inlineintgetsum(int_price,int_qty)//定義{return(_price*_qty);}intmain(intargc,char*argv[]){intsum=getsum(2,3); //呼叫
returnEXIT_SUCCESS;}//FileName:inlinefun.cpp01#include<cstdlib>02#include<iostream>03#include<iomanip>04usingnamespacestd;06inlinevoidgetsum(int,int); 07intmain(intargc,char*argv[])08{09intprice,qty;10cout<<"全OK書籍購物系統(tǒng)"<<endl<<endl;11cout<<"輸入單價(jià):";12cin>>price;13cout<<"輸入數(shù)量:";14cin>>qty;P13-3getsum(price,qty); system("PAUSE");17returnEXIT_SUCCESS;18}19inlinevoidgetsum(int_price,int_qty)20{21if(_qty>=100)22{23cout<<"打八折!!一共"<<_price*_qty*0.8<<"元!!\n\n";24}25else26{27cout<<"謝謝惠顧!!一共"<<_price*_qty<<"元!!\n\n";28}29}//FileName:funOverloading.cpp01#include<cstdlib>02#include<iostream>03#include<iomanip>04usingnamespacestd;05intmax(int,int);06floatmax(float,float,float);08intmain(intargc,char*argv[]){10intx1=15,y1=75;11floatx2=56.4,y2=78.5,z2=24.8,; 12cout<<"max(15,75)="<<max(x1,y1)<<endl; 13cout<<"max(56.4,78.5,24.8)="<<max(x2,y2,z2)<<endl<<endl;15system("PAUSE");16returnEXIT_SUCCESS;17}P13-419intmax(inta,intb)20{ 21intmax1;22max1=(a>b)?a:b;23return(max1); 24}26floatmax(floata,floatb,floatc) 27{28floatmax2;29if(a<b){31if(b<c)32max2=c;33else34max2=b;35}36else{38if(a<c)39max2=c;40else41max2=a;42}43return(max2);44}13-3參考變數(shù)
C++可讓多個(gè)變數(shù)佔(zhàn)用相同的記憶體位址,此種變數(shù)一般稱之為「參考變數(shù)」,傳統(tǒng)的C語言並沒有提供參考變數(shù)的功能。若變數(shù)宣告時(shí)在變數(shù)之前加上「&」位址運(yùn)算子,此時(shí)該變數(shù)即被宣告為參考變數(shù)。使用變數(shù)時(shí)在變數(shù)之前加上「&」位址運(yùn)算子,此時(shí)該變數(shù)即會(huì)取得記憶體的位址。以下的簡(jiǎn)例說明一般變數(shù)、參考變數(shù)、指標(biāo)變數(shù):
P13-6一般變數(shù)、參考變數(shù)、指標(biāo)變數(shù)的差異:
1.intn1=2;2.int&n2=n1;3.int*n3=&n1;4.n2++;5.*n3+=1;6.cout<<"n1="<<n1<<"\t\tn1位址"<<&n1<<endl;7.cout<<"n2="<<n2<<"\t\tn2位址"<<&n2<<endl;8.cout<<"n3="<<n3<<"\tn3位址"<<&n3<<"\t*n3="<<*n3<<endl;//FileName:RefVariables.cpp01#include<cstdlib>02#include<iostream>03#include<iomanip>04usingnamespacestd;06intmain(intargc,char*argv[])07{08inta=168;09int&b=a;10cout<<"a="<<a<<"\t\ta位址"<<&a<<endl;11cout<<"b="<<b<<"\t\tb位址"<<&b<<endl;13b+=100;14cout<<"-----------------------------\n";15cout<<"a="<<a<<"\t\ta位址"<<&a<<endl;16cout<<"b="<<b<<"\t\tb位址"<<&b<<endl;18cout<<"-----------------------------\n";19intc=a;20cout<<"a="<<a<<"\t\ta位址"<<&a<<endl;21cout<<"c="<<c<<"\t\tc位址"<<&c<<endl;P13-823cout<<"-----------------------------\n";24int*d=&a;25*d+=100;26cout<<"a="<<a<<"\t\ta位址"<<&a<<endl;27cout<<"b="<<b<<"\t\tb位址"<<&b<<endl;28cout<<"d="<<d<<"\td位址"<<&d<<endl;29cout<<endl;30system("PAUSE");31returnEXIT_SUCCESS;32}13-4C++函式的傳址呼叫特有功能
參考呼叫是C++另一種類似傳址呼叫方式。在定義或宣告參考呼叫函式的虛引數(shù)之前
必須加上「&」位址運(yùn)算子若使用參考呼叫的函式的實(shí)引數(shù)與引數(shù)都會(huì)佔(zhàn)用
相同的記憶體位址。下面是參考呼叫函式的宣告與定義寫法:
voidmyfun(int&,double&);
intmain(intargc,char*argv[])
{
inta=168;
doubleb=1.23;
myfun(a,b);
return0;
}
voidmyfun(int&x,double&y)
{
……
}P13-10P13-11//FileName:CallAddress.cpp01#include<cstdlib>02#include<iostream>03#include<iomanip>04usingnamespacestd;05voidCallAddress(int*,int*); 06intmain(intargc,char*argv[])07{08cout<<"---------傳址呼叫---------\n\n";09inta,b;10a=10,b=12;11cout<<"函式呼叫前\n";12cout<<"a="<<a<<"\t\tb="<<b<<endl;13cout<<"a位址"<<&a<<"\tb位址"<<&b<<endl<<endl;14CallAddress(&a,&b);1516cout<<"函式呼叫後\n";17cout<<"a="<<a<<"\t\tb="<<b<<endl;18cout<<"a位址"<<&a<<"\tb位址"<<&b<<endl<<endl;19system("PAUSE");20returnEXIT_SUCCESS;21}22voidCallAddress(int*x,int*y)23{24*x=4;25*y=*x+*y;26cout<<"函式呼叫\(zhòng)n";27cout<<"x="<<x<<"\ty="<<y<<endl;28cout<<"*x="<<*x<<"\t\t*y="<<*y<<endl;29cout<<"x位址"<<&x<<"\ty位址"<<&y<<endl<<endl;30}P13-14//FileName:CallRef.cpp01#include<cstdlib>02#include<iostream>03#include<iomanip>04usingnamespacestd;05voidCallRef(int&,int&);06intmain(intargc,char*argv[])07{08cout<<"--------參考呼叫--------\n\n";09inta,b;10a=10,b=12;11cout<<"函式呼叫前\n";12cout<<"a="<<a<<"\t\tb="<<b<<endl;13cout<<"a位址"<<&a<<"\tb位址"<<&b<<endl<<endl;1415CallRef(a,b);1617cout<<"函式呼叫後\n";18cout<<"a="<<a<<"\t\tb="<<b<<endl;19cout<<"a位址"<<&a<<"\tb位址"<<&b<<endl<<endl;2021system("PAUSE");22returnEXIT_SUCCESS;24voidCallRef(int&x,int&y)25{26x=4;27y=x+y;28cout<<"函式呼叫\(zhòng)n";29cout<<"x="<<x<<"\t\ty="<<y<<endl;30cout<<"x位址"<<&x<<"\ty位址"<<&y<<endl<<endl;31}結(jié)論:使用函式之「?jìng)髦贰?指標(biāo))或「參考」的呼叫
方式,都能讓被呼叫函式的結(jié)果回傳給主程式。使用指標(biāo)來傳遞參數(shù),對(duì)於初學(xué)者困難度高且
使用太多指標(biāo)亦會(huì)造成混淆。使用「參考」傳遞參數(shù)來代替指標(biāo)傳遞參數(shù),
不但易學(xué)且有「淨(jìng)化」程式的效果,尤其在
撰寫程式時(shí),要將整個(gè)物件或部份物件成員
傳給另一個(gè)函式時(shí),使用「參考呼叫」即是
最佳的選擇。13-5string類別
C++的標(biāo)準(zhǔn)程式庫函式提供string類別,此類別提供許多更方便的字串成員函式供您使用,以更直覺方式來處理字串。欲在程式中使用string類別時(shí),必須在程式最開頭先含入#include<string>才行。下面寫法為字串物件的建立方式
stringemptystr; stringnamestr(“王小明”); stringprod=”VB.NET”;
P13-17string類別重新定義
==(相等)、!=(不相等)、<(小於)、>(大於)、
<=(不大於)、>=(不小於)、+(連接兩個(gè)字串)、
=(指定)…等運(yùn)算子。下面簡(jiǎn)例比較str_id字串是否為“松崗”字串,若成立則印出“松崗Good”,反之印出“#_#”。
stringstr_id(“松崗”);
stringshow;
if(strid==”松崗”) //使用==運(yùn)算子比較兩字串
{
cout<<“松崗”+“good”; //使用+運(yùn)算子
}
else
{
show=”#_#”; //將字串“#_#”指定給show
cout<<s;
}P13-17P13-18P13-20//FileName:string1.cpp01#include<cstdlib>02#include<iostream>03#include<iomanip>04#include<string>0506usingnamespacestd;0708intmain(intargc,char*argv[])09{10stringinput_str,insert_str,sub_str;11intn;12cout<<"請(qǐng)輸入一個(gè)字串:";13cin>>input_str;14cout<<"字串長(zhǎng)度:"<<input_str.length()<<endl;15cout<<"是否為空字串:"<<(input_str.empty()?"是":"否")<<endl;16cout<<"輸入插入的字串:";17cin>>insert_str;18cout<<"輸入插入的位置:";19cin>>n;20input_str.insert(n,insert_str);21cout<<"新字串:"+input_str<<endl;22cout<<"輸入尋找的子字串:";23cin>>sub_str;24cout<<sub_str<<"子字串在"<<input_str<<"的第"25<<input_str.find(sub_str)+1<<"位置"<<endl<<endl;26system("PAUSE");27returnEXIT_SUCCESS;28}二、傳統(tǒng)字串與string字串的互換方法1string字串轉(zhuǎn)成字串陣列
先利用string類別中的c_str()方法轉(zhuǎn)換成傳統(tǒng)字串陣列,並用strcpy字串拷貝函式,將它拷貝到name字元陣列中:
charname[20];strings1;strcpy(name,s1.c_str());方法2將傳統(tǒng)的字串轉(zhuǎn)換成stringstringname;char*s;name=s;P13-21//FileName:string2.cp
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公室空間的靈活性與可變性設(shè)計(jì)
- 現(xiàn)代物流人才培養(yǎng)與教育創(chuàng)新
- 學(xué)校記者團(tuán)國慶節(jié)活動(dòng)方案
- 現(xiàn)代企業(yè)的辦公自動(dòng)化與多維度管理培訓(xùn)體系構(gòu)建研究
- 現(xiàn)代企業(yè)家的自我管理與時(shí)間管理策略
- 現(xiàn)代汽車制造工藝的變革與教育新模式
- 現(xiàn)代企業(yè)決策中的核心能力體現(xiàn)
- 國慶節(jié)主題活動(dòng)方案早教
- 2023三年級(jí)數(shù)學(xué)下冊(cè) 四 綠色生態(tài)園-解決問題第3課時(shí)說課稿 青島版六三制001
- 2024-2025學(xué)年高中歷史 專題八 當(dāng)今世界經(jīng)濟(jì)的全球化趨勢(shì) 二 當(dāng)今世界經(jīng)濟(jì)的全球化趨勢(shì)(3)教學(xué)說課稿 人民版必修2
- 燃煤電廠超低排放煙氣治理工程技術(shù)規(guī)范(HJ 2053-2018)
- 臨床敘事護(hù)理概述與應(yīng)用
- TSG-T7001-2023電梯監(jiān)督檢驗(yàn)和定期檢驗(yàn)規(guī)則宣貫解讀
- 冠脈介入進(jìn)修匯報(bào)
- 護(hù)理病例討論制度課件
- 養(yǎng)陰清肺膏的臨床應(yīng)用研究
- 恩施自治州建始東升煤礦有限責(zé)任公司東升煤礦礦產(chǎn)資源開發(fā)利用與生態(tài)復(fù)綠方案
- PDCA提高臥床患者踝泵運(yùn)動(dòng)的執(zhí)行率
- 蔣詩萌小品《誰殺死了周日》臺(tái)詞完整版
- DBJ-T 15-98-2019 建筑施工承插型套扣式鋼管腳手架安全技術(shù)規(guī)程
- 2025屆新高考英語復(fù)習(xí)閱讀理解說明文解題策略
評(píng)論
0/150
提交評(píng)論