收藏 分享(赏)

最新C & C 学习范本第13章 C 特有功能与字串.ppt

上传人:oil007 文档编号:3609983 上传时间:2018-11-13 格式:PPT 页数:33 大小:652.50KB
下载 相关 举报
最新C & C  学习范本第13章 C  特有功能与字串.ppt_第1页
第1页 / 共33页
最新C & C  学习范本第13章 C  特有功能与字串.ppt_第2页
第2页 / 共33页
最新C & C  学习范本第13章 C  特有功能与字串.ppt_第3页
第3页 / 共33页
最新C & C  学习范本第13章 C  特有功能与字串.ppt_第4页
第4页 / 共33页
最新C & C  学习范本第13章 C  特有功能与字串.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、最新C & C+學習範本,第13章 C+特有功能與字串,本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載,13-1 inline 函式,inline 函式是C+ 新增功能,傳統 C 所沒有。 透過 inline 函式可加快程式執行速度。 C+ 編譯時,將 inline 函式內的敘述直接取代 該函式,會增加程式長度,但執行時可直接執 行該敘述省掉進出函式時間。 語法: inline return_type function_name(argument_list),P13-2,inline 函式寫法和一般函式一樣,必須在使用前 先宣告,且必須在宣告或定義函式最前面加上 inline。 若 i

2、nline 函式內的敘述太長或是遞迴函式, 編譯器會視為一般函式處理。 使用 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

3、) 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“

4、); 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

5、(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

6、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

7、語言並沒有提供參考變數的功能。 若變數宣告時在變數之前加上&位址運算子,此時該變數即被宣告為參考變數。 使用變數時在變數之前加上&位址運算子,此時該變數即會取得記憶體的位址。 以下的簡例說明一般變數、參考變數、指標變數:,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

8、 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

9、 *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,/

10、 FileName : CallRef.cpp 01 #include 02 #include 03 #include 04 using namespace std; 05 void CallRef(int,24 void CallRef(int 31 ,結論:,使用函式之傳址(指標) 或參考的呼叫 方式,都能讓被呼叫函式的結果回傳給主程式。 使用指標來傳遞參數,對於初學者困難度高且 使用太多指標亦會造成混淆。 使用參考傳遞參數來代替指標傳遞參數, 不但易學且有淨化程式的效果,尤其在 撰寫程式時,要將整個物件或部份物件成員 傳給另一個函式時,使用參考呼叫即是 最佳的選擇。,13-5 strin

11、g 類別,C+ 的標準程式庫函式提供 string類別,此類別提供許多更方便的字串成員函式供您使用,以更直覺方式來處理字串。 欲在程式中使用string類別時,必須在程式最開頭先含入 #include 才行。 下面寫法為字串物件的建立方式string emptystr; string namestr(“王小明”); string prod=”VB.NET”;,P13-17,string 類別重新定義 =(相等) 、!=(不相等) 、 (大於)、 =(不小於)、 + (連接兩個字串)、 = (指定) 等運算子。下面簡例比較str_id字串是否為 “松崗”字串,若成立則印出 “松崗Good”,反之

12、印出 “#_#”。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

13、*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 ,二、傳統

14、字串與string字串的互換,方法1 string字串轉成字串陣列 先利用string類別中的c_str()方法轉換成傳統字串陣列,並用strcpy字串拷貝函式,將它拷貝到name字元陣列中:char name20;string s1;strcpy(name, s1.c_str(); 方法2 將傳統的字串轉換成stringstring name ;char *s ;name = s ;,P13-21,/ FileName : string2.cpp 01 #include 02 #include 03 #include 04 #include 05 06 using namespace std

15、; 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=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 .,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报