![CC学习范本C特有功能与字串_第1页](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc391.gif)
![CC学习范本C特有功能与字串_第2页](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc392.gif)
![CC学习范本C特有功能与字串_第3页](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc393.gif)
![CC学习范本C特有功能与字串_第4页](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc394.gif)
![CC学习范本C特有功能与字串_第5页](http://file4.renrendoc.com/view/b1b05d309ff06e2aab0fe83db217fc39/b1b05d309ff06e2aab0fe83db217fc395.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最新C&C++學習範本第13章C++特有功能與字串本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載13-1inline函式
inline函式是C++新增功能,傳統C所沒有。透過inline函式可加快程式執行速度。C++編譯時,將inline函式內的敘述直接取代
該函式,會增加程式長度,但執行時可直接執
行該敘述省掉進出函式時間。語法:
inlinereturn_typefunction_name(argument_list)P13-2inline函式寫法和一般函式一樣,必須在使用前
先宣告,且必須在宣告或定義函式最前面加上inline。若inline函式內的敘述太長或是遞迴函式,
編譯器會視為一般函式處理。使用inline函式由於有argument_list(引數串列)
可對傳入資料的資料型態檢查是否有錯誤;
使用define巨集則無法對資料型態做檢查。
return_type是指函式傳回結果的資料型態。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書籍購物系統"<<endl<<endl;11cout<<"輸入單價:";12cin>>price;13cout<<"輸入數量:";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參考變數
C++可讓多個變數佔用相同的記憶體位址,此種變數一般稱之為「參考變數」,傳統的C語言並沒有提供參考變數的功能。若變數宣告時在變數之前加上「&」位址運算子,此時該變數即被宣告為參考變數。使用變數時在變數之前加上「&」位址運算子,此時該變數即會取得記憶體的位址。以下的簡例說明一般變數、參考變數、指標變數:
P13-6一般變數、參考變數、指標變數的差異:
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++另一種類似傳址呼叫方式。在定義或宣告參考呼叫函式的虛引數之前
必須加上「&」位址運算子若使用參考呼叫的函式的實引數與引數都會佔用
相同的記憶體位址。下面是參考呼叫函式的宣告與定義寫法:
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<<"函式呼叫\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<<"函式呼叫\n";29cout<<"x="<<x<<"\t\ty="<<y<<endl;30cout<<"x位址"<<&x<<"\ty位址"<<&y<<endl<<endl;31}結論:使用函式之「傳址」(指標)或「參考」的呼叫
方式,都能讓被呼叫函式的結果回傳給主程式。使用指標來傳遞參數,對於初學者困難度高且
使用太多指標亦會造成混淆。使用「參考」傳遞參數來代替指標傳遞參數,
不但易學且有「淨化」程式的效果,尤其在
撰寫程式時,要將整個物件或部份物件成員
傳給另一個函式時,使用「參考呼叫」即是
最佳的選擇。13-5string類別
C++的標準程式庫函式提供string類別,此類別提供許多更方便的字串成員函式供您使用,以更直覺方式來處理字串。欲在程式中使用string類別時,必須在程式最開頭先含入#include<string>才行。下面寫法為字串物件的建立方式
stringemptystr; stringnamestr(“王小明”); stringprod=”VB.NET”;
P13-17string類別重新定義
==(相等)、!=(不相等)、<(小於)、>(大於)、
<=(不大於)、>=(不小於)、+(連接兩個字串)、
=(指定)…等運算子。下面簡例比較str_id字串是否為“松崗”字串,若成立則印出“松崗Good”,反之印出“#_#”。
stringstr_id(“松崗”);
stringshow;
if(strid==”松崗”) //使用==運算子比較兩字串
{
cout<<“松崗”+“good”; //使用+運算子
}
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<<"請輸入一個字串:";13cin>>input_str;14cout<<"字串長度:"<<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}二、傳統字串與string字串的互換方法1string字串轉成字串陣列
先利用string類別中的c_str()方法轉換成傳統字串陣列,並用strcpy字串拷貝函式,將它拷貝到name字元陣列中:
charname[20];strings1;strcpy(name,s1.c_str());方法2將傳統的字串轉換成stringstringname;char*s;name=s;P13-21//FileName:string2.cp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度婴幼儿保育员职业资格认证聘用合同
- 2025年度茶叶出口退税代理服务合同-@-3
- 2025年度防盗门安装工程安全生产责任合同
- 2025年度农村土地征收补偿安置协议
- 2025年度董事任期考核及聘任合同
- 2025年陈设艺术陶瓷制品项目发展计划
- 动手实践小班农业劳动体验计划
- 秋季学校社团活动规划计划
- 促进幼儿积极参与的活动设计计划
- 建立职业目标与价值观的统计划
- DB31∕T 1043-2017 暴雨强度公式与设计雨型标准
- 多学科视域中的历史动物研究综述
- 知名企业建筑工程抹灰工程标准规范图示手册
- 诊所信息保密和安全管理制度
- 重大事故隐患排查治理
- 部编版语文一年级下册第一单元教材解读
- 护士临床护理组长
- 2025保安部年度工作计划
- 土建、装饰、维修改造等零星工程施工组织设计技术标
- 宠物猫护理教学
- 高速公路养护作业安全培训内容
评论
0/150
提交评论