CC学习范本第13章C特有功能与字串.ppt_第1页
CC学习范本第13章C特有功能与字串.ppt_第2页
CC学习范本第13章C特有功能与字串.ppt_第3页
CC学习范本第13章C特有功能与字串.ppt_第4页
CC学习范本第13章C特有功能与字串.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最新C & C+學習範本,第13章 C+特有功能與字串,本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載,13-1 inline 函式,inline 函式是C+ 新增功能,傳統 C 所沒有。 透過 inline 函式可加快程式執行速度。 C+ 編譯時,將 inline 函式內的敘述直接取代 該函式,會增加程式長度,但執行時可直接執 行該敘述省掉進出函式時間。 語法: inline return_type function_name(argument_list),P13-2,inline 函式寫法和一般函式一樣,必須在使用前 先宣告,且必須在宣告或定義函式最前面加上 inline。 若 inline 函式內的敘述太長或是遞迴函式, 編譯器會視為一般函式處理。 使用 inline 函式由於有 argument_list(引數串列) 可對傳入資料的資料型態檢查是否有錯誤; 使用define 巨集則無法對資料型態做檢查。 return_type 是指函式傳回結果的資料型態。 function_name 代表函式名稱。,P13-2,inline 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.cpp 01 #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 price ; 13 cout qty;,P13-3,getsum(price, qty) ; 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 else 26 27 cout “謝謝惠顧!一共“ _price*_qty “元!nn“ ; 28 29 ,/ FileName : funOverloading.cpp 01 #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 endl; 15 system(“PAUSE“); 16 return EXIT_SUCCESS; 17 ,P13-4,19 int max(int a, int b) 20 21 int max1; 22 max1=(ab)? 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 else 34 max2=b; 35 36 else 38 if(ac) 39 max2=c; 40 else 41 max2=a; 42 43 return (max2); 44 ,13-3 參考變數,C+ 可讓多個變數佔用相同的記憶體位址,此種變數一般稱之為參考變數,傳統的C語言並沒有提供參考變數的功能。 若變數宣告時在變數之前加上&位址運算子,此時該變數即被宣告為參考變數。 使用變數時在變數之前加上&位址運算子,此時該變數即會取得記憶體的位址。 以下的簡例說明一般變數、參考變數、指標變數:,P13-6,一般變數、參考變數、指標變數的差異:,1. int n1=2; 2. int ,/ FileName : RefVariables.cpp 01 #include 02 #include 03 #include 04 using namespace std; 06 int main(int argc, char *argv) 07 08 int a=168; 09 int ,P13-8,23 cout “-n“ ; 24 int *d= 32 ,13-4 C+函式的傳址呼叫特有功能,參考呼叫是 C+ 另一種類似傳址呼叫方式。 在定義或宣告參考呼叫函式的虛引數之前 必須加上 void myfun(int &x, double &y) ,P13-10,P13-11,/ FileName : CallAddress.cpp 01 #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位址“ 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位址“ 30 ,P13-14,/ FileName : CallRef.cpp 01 #include 02 #include 03 #include 04 using namespace std; 05 void CallRef(int,24 void CallRef(int 31 ,結論:,使用函式之傳址(指標) 或參考的呼叫 方式,都能讓被呼叫函式的結果回傳給主程式。 使用指標來傳遞參數,對於初學者困難度高且 使用太多指標亦會造成混淆。 使用參考傳遞參數來代替指標傳遞參數, 不但易學且有淨化程式的效果,尤其在 撰寫程式時,要將整個物件或部份物件成員 傳給另一個函式時,使用參考呼叫即是 最佳的選擇。,13-5 string 類別,C+ 的標準程式庫函式提供 string類別,此類別提供許多更方便的字串成員函式供您使用,以更直覺方式來處理字串。 欲在程式中使用string類別時,必須在程式最開頭先含入 #include 才行。 下面寫法為字串物件的建立方式 string emptystr; string namestr(“王小明”); string prod=”VB.NET”;,P13-17,string 類別重新定義 =(相等) 、!=(不相等) 、 (大於)、 =(不小於)、 + (連接兩個字串)、 = (指定) 等運算子。 下面簡例比較str_id字串是否為 “松崗”字串,若成立則印出 “松崗Good”,反之印出 “#_#”。 string str_id(“松崗”); string show; if(strid=”松崗”) /使用 = 運算子比較兩字串 cout “松崗” + “good” ; /使用 + 運算子 else show=”#_#”; /將字串 “#_#”指定給show cout s ; ,P13-17,P13-18,P13-20,/ FileName : string1.cpp 01 #include 02 #include 03 #include 04 #include 05 06 using namespace std; 07 08 int main(int argc, char *argv) 09 10 string input_str, insert_str, sub_str; 11 int n; 12 cout input_str; 14 cout insert_str;,18 cout n; 20 input_str.insert(n, insert_str); 21 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.cpp 01 #include 02 #include 03 #include 04 #include 05 06 using namespace std; 07 08 int main(int argc, char *argv) 09 10 struct car 11 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-22,21 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论