收藏 分销(赏)

CC学习范本C特有功能与字串.pptx

上传人:胜**** 文档编号:955078 上传时间:2024-04-09 格式:PPTX 页数:33 大小:482.79KB 下载积分:10 金币
下载 相关 举报
CC学习范本C特有功能与字串.pptx_第1页
第1页 / 共33页
CC学习范本C特有功能与字串.pptx_第2页
第2页 / 共33页


点击查看更多>>
资源描述
最新最新C&C+學習範本學習範本第第13章章 C+特有功能與字串特有功能與字串本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載13-1 inline 函式函式 linline 函式是函式是C+新增功能,傳統新增功能,傳統 C 所沒有。所沒有。l透過透過 inline 函式可加快程式執行速度。函式可加快程式執行速度。lC+編譯時,將編譯時,將 inline 函式內的敘述直接取代函式內的敘述直接取代該函式,會增加程式長度,但執行時可直接執該函式,會增加程式長度,但執行時可直接執行該敘述省掉進出函式時間。行該敘述省掉進出函式時間。l語法:語法:inline return_type function_name(argument_list)P13-21.inline 函式寫法和一般函式一樣,必須在使用前函式寫法和一般函式一樣,必須在使用前先宣告,且必須在宣告或定義函式最前面加上先宣告,且必須在宣告或定義函式最前面加上 inline。2.若若 inline 函式內的敘述太長或是遞迴函式,函式內的敘述太長或是遞迴函式,編譯器會視為一般函式處理。編譯器會視為一般函式處理。3.使用使用 inline 函式由於有函式由於有 argument_list(引數串列引數串列)可對傳入資料的資料型態檢查是否有錯誤;可對傳入資料的資料型態檢查是否有錯誤;使用使用define 巨集則無法對資料型態做檢查。巨集則無法對資料型態做檢查。4.return_type 是指函式傳回結果的資料型態。是指函式傳回結果的資料型態。5.function_name 代表函式名稱。代表函式名稱。P13-2inline int getsum(int,int);/宣告宣告inline int getsum(int _price,int _qty)/定義定義 return(_price*_qty);int main(int argc,char*argv)int sum=getsum(2,3);/呼叫呼叫 return EXIT_SUCCESS;/FileName:inlinefun.cpp01#include 02#include 03#include 04 using namespace std;06 inline void getsum(int,int);07 int main(int argc,char*argv)08 09 int price,qty;10 cout 全全OK書籍購物系統書籍購物系統 endl endl;11 cout price;13 cout qty;P13-315 getsum(price,qty);16 system(PAUSE);17 return EXIT_SUCCESS;18 19 inline void getsum(int _price,int _qty)20 21 if(_qty=100)22 23 cout 打八折打八折!一共一共 _price*_qty*0.8 元元!nn;24 25 else26 27 cout 謝謝惠顧謝謝惠顧!一共一共 _price*_qty 元元!nn;28 29/FileName:funOverloading.cpp01#include 02#include 03#include 04 using namespace std;05 int max(int,int);06 float max(float,float,float);08 int main(int argc,char*argv)10 int x1=15,y1=75;11 float x2=56.4,y2=78.5,z2=24.8,;12 cout max(15,75)=max(x1,y1)endl;13 cout max(56.4,78.5,24.8)=max(x2,y2,z2)endl b)?a:b;23 return(max1);24 26 float max(float a,float b,float c)27 28 float max2;29 if(ab)31 if(bc)32 max2=c;33 else34 max2=b;35 36 else 38 if(ac)39 max2=c;40 else41 max2=a;42 43 return(max2);44 13-3 參考變數參考變數 lC+可讓多個變數佔用相同的記憶體位址,此種變數一般可讓多個變數佔用相同的記憶體位址,此種變數一般稱之為參考變數,傳統的稱之為參考變數,傳統的C語言並沒有提供參考變數語言並沒有提供參考變數的功能。的功能。l若變數宣告時在變數之前加上若變數宣告時在變數之前加上&位址運算子,此時該位址運算子,此時該變數即被宣告為參考變數。變數即被宣告為參考變數。l使用變數時在變數之前加上使用變數時在變數之前加上&位址運算子,此時該變位址運算子,此時該變數即會取得記憶體的位址。數即會取得記憶體的位址。l以下的簡例說明一般變數、參考變數、指標變數:以下的簡例說明一般變數、參考變數、指標變數:P13-6一般變數、參考變數、指標變數的差異:一般變數、參考變數、指標變數的差異:1.int n1=2;2.int&n2=n1;3.int*n3=&n1;4.n2+;5.*n3+=1;6.cout n1=n1 ttn1位址位址&n1 endl;7.cout n2=n2 ttn2位址位址&n2 endl;8.cout n3=n3 tn3位址位址&n3 t*n3=*n3 endl;/FileName:RefVariables.cpp01#include 02#include 03#include 04 using namespace std;06 int main(int argc,char*argv)07 08 int a=168;09 int&b=a;10 cout a=a tta位址位址&a endl;11 cout b=b ttb位址位址&b endl;13 b+=100;14 cout -n;15 cout a=a tta位址位址&a endl;16 cout b=b ttb位址位址&b endl;18 cout -n;19 int c=a;20 cout a=a tta位址位址&a endl;21 cout c=c ttc位址位址&c endl;P13-823 cout -n;24 int*d=&a;25 *d+=100;26 cout a=a tta位址位址&a endl;27 cout b=b ttb位址位址&b endl;28 cout d=d td位址位址&d endl;29 cout endl;30 system(PAUSE);31 return EXIT_SUCCESS;32 13-4 C+函式的傳址呼叫特有功能函式的傳址呼叫特有功能 l參考呼叫是參考呼叫是 C+另一種類似傳址呼叫方式。另一種類似傳址呼叫方式。l在定義或宣告參考呼叫函式的虛引數之前在定義或宣告參考呼叫函式的虛引數之前必須加上必須加上&位址運算子位址運算子l若使用參考呼叫的函式的實引數與引數都會佔用若使用參考呼叫的函式的實引數與引數都會佔用相同的記憶體位址。相同的記憶體位址。l下面是參考呼叫函式的宣告與定義寫法:下面是參考呼叫函式的宣告與定義寫法:void myfun(int&,double&);int main(int argc,char*argv)int a=168;double b=1.23;myfun(a,b);return 0;void myfun(int&x,double&y)P13-10P13-11/FileName:CallAddress.cpp01#include 02#include 03#include 04 using namespace std;05 void CallAddress(int*,int*);06 int main(int argc,char*argv)07 08 cout -傳址呼叫傳址呼叫-nn;09 int a,b;10 a=10,b=12;11 cout 函式呼叫前函式呼叫前n;12 cout a=a ttb=b endl;13 cout a位址位址&a tb位址位址&b endl endl;14 CallAddress(&a,&b);1516 cout 函式呼叫後函式呼叫後n;17 cout a=a ttb=b endl;18 cout a位址位址&a tb位址位址&b endl endl;19 system(PAUSE);20 return EXIT_SUCCESS;21 22 void CallAddress(int*x,int*y)23 24 *x=4;25 *y=*x+*y;26 cout 函式呼叫n;27 cout x=x ty=y endl;28 cout *x=*x tt*y=*y endl;29 cout x位址&x ty位址&y endl endl;30 P13-14/FileName:CallRef.cpp01#include 02#include 03#include 04 using namespace std;05 void CallRef(int&,int&);06 int main(int argc,char*argv)07 08 cout -參參 考考 呼呼 叫叫-nn;09 int a,b;10 a=10,b=12;11 cout 函式呼叫前函式呼叫前n;12 cout a=a ttb=b endl;13 cout a位址位址&a tb位址位址&b endl endl;1415 CallRef(a,b);1617 cout 函式呼叫後函式呼叫後n;18 cout a=a ttb=b endl;19 cout a位址位址&a tb位址位址&b endl endl;2021 system(PAUSE);22 return EXIT_SUCCESS;24 void CallRef(int&x,int&y)25 26 x=4;27 y=x+y;28 cout 函式呼叫函式呼叫n;29 cout x=x tty=y endl;30 cout x位址位址&x ty位址位址&y endl endl;31 結論結論:l使用函式之傳址使用函式之傳址(指標指標)或參考的呼叫或參考的呼叫方式,都能讓被呼叫函式的結果回傳給主程式。方式,都能讓被呼叫函式的結果回傳給主程式。l使用指標來傳遞參數,對於初學者困難度高且使用指標來傳遞參數,對於初學者困難度高且使用太多指標亦會造成混淆。使用太多指標亦會造成混淆。l使用參考傳遞參數來代替指標傳遞參數,使用參考傳遞參數來代替指標傳遞參數,不但易學且有淨化程式的效果,尤其在不但易學且有淨化程式的效果,尤其在撰寫程式時,要將整個物件或部份物件成員撰寫程式時,要將整個物件或部份物件成員傳給另一個函式時,使用參考呼叫即是傳給另一個函式時,使用參考呼叫即是最佳的選擇。最佳的選擇。13-5 string 類別類別 C+的標準程式庫函式提供的標準程式庫函式提供 string類別,類別,此類別提供許多更方便的字串成員函式供此類別提供許多更方便的字串成員函式供您使用,以更直覺方式來處理字串。您使用,以更直覺方式來處理字串。欲在程式中使用欲在程式中使用string類別時,必須在程式類別時,必須在程式最開頭先含入最開頭先含入#include 才行。才行。下面寫法為字串物件的建立方式下面寫法為字串物件的建立方式 string emptystr;string namestr(“王小明王小明”);string prod=”VB.NET”;P13-17string 類別重新定義類別重新定義=(相等相等)、!=(不相等不相等)、(大於大於)、=(不小於不小於)、+(連接兩個字串連接兩個字串)、=(指定指定)等運算子。等運算子。下面簡例比較下面簡例比較str_id字串是否為字串是否為“松崗松崗”字串,若成立則印字串,若成立則印出出“松崗松崗Good”,反之印出,反之印出“#_#”。string str_id(“松崗松崗”);string show;if(strid=”松崗松崗”)/使用使用=運算子比較兩字串運算子比較兩字串 cout “松崗松崗”+“good”;/使用使用+運算子運算子else show=”#_#”;/將字串將字串“#_#”指定給指定給show cout s;P13-17P13-18P13-20/FileName:string1.cpp01#include 02#include 03#include 04#include 0506 using namespace std;0708 int main(int argc,char*argv)09 10 string input_str,insert_str,sub_str;11 int n;12 cout input_str;14 cout 字串長度:字串長度:input_str.length()endl;15 cout 是否為空字串:是否為空字串:(input_str.empty()?是是:否否)endl;16 cout insert_str;18 cout n;20 input_str.insert(n,insert_str);21 cout 新字串:+input_str endl;22 cout sub_str;24 cout sub_str 子字串在 input_str 的第 25 input_str.find(sub_str)+1 位置 endl endl;26 system(PAUSE);27 return EXIT_SUCCESS;28 二、傳統字串與二、傳統字串與string字串的互換字串的互換方法方法1 string字串轉成字串陣列字串轉成字串陣列先利用先利用string類別中的類別中的c_str()方法轉換成傳統字方法轉換成傳統字串陣列,並用串陣列,並用strcpy字串拷貝函式,將它拷貝到字串拷貝函式,將它拷貝到name字元陣列中:字元陣列中:char name20;string s1;strcpy(name,s1.c_str();方法方法2 將傳統的字串轉換成將傳統的字串轉換成string string name;char*s;name=s;P13-21/FileName:string2.cpp01#include 02#include 03#include 04#include 0506 using namespace std;0708 int main(int argc,char*argv)09 10 struct car11 12 char car_name12;13 string car_no;14 int price;15 int qty;16 ;17 car ford;18 string str1=福特福特2008;19 char buff=有夠有夠 Cool.0;20 char s20;P13-2221 strcpy(ford.car_name,str1.c_str();22 ford.car_no=OK-300;23 ford.price=886200;24 ford.qty=3;25 26 int total=ford.price*ford.qty;27 cout str1+buff endl;28 strcpy(s,str1.c_str();29 cout s 免頭款免頭款!零利率零利率!endl;30 31 strcpy(s,ford.car_name);32 cout s 是您最佳的選擇是您最佳的選擇!;33 cout nn;34 system(PAUSE);35 return EXIT_SUCCESS;36 本章結束本章結束Take a break.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服