




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河北张家口启臻学校高中储备教师招聘模拟试卷及答案详解(历年真题)
- 2025湖南科技学院公开招聘44人模拟试卷及完整答案详解一套
- 2025福建福州市马尾区琅岐镇殡仪服务站招聘工作人员1人考前自测高频考点模拟试题附答案详解(典型题)
- 2025广东深圳市九洲电器有限公司招聘产品经理模拟试卷(含答案详解)
- 2025年黑河逊克县乡村医生公开招聘19人考前自测高频考点模拟试题及一套答案详解
- 2025江苏苏州市张家港邮政公司招聘2人考前自测高频考点模拟试题及1套完整答案详解
- 2025江苏南通市海门区某机关单位招聘5人(某机关单位会务、点心师、服务员、安保)考前自测高频考点模拟试题(含答案详解)
- 2025黑龙江齐齐哈尔市富裕县应急管理局招聘公益性岗位人员1人模拟试卷及答案详解(全优)
- 2025国家电网内蒙古新正产业发展有限公司高校毕业生招聘41人(第三批)模拟试卷及答案详解(历年真题)
- 2025江西赣州市第五人民医院劳务派遣招聘助理护士20人模拟试卷及完整答案详解
- 2025贵州盐业(集团)遵义有限责任公司招聘15人笔试备考试题及答案解析
- EMS供应商对比方案报告
- 神奇的加密术教学设计-2025-2026学年初中数学北师大版2024八年级上册-北师大版2024
- 《现代施工工程机械》课件(共十四章)
- 价格波动对利润影响分析-洞察及研究
- 2021译林版高中英语选择性必修三课文翻译
- DZ∕T 0338.1-2020 固体矿产资源量估算规程 第1部分 通则(正式版)
- 2024届唐山市高三高考一模(第一次模拟演练)语文试卷(含标准答案)
- 空调维保投标方案(技术方案)
- 光伏电站全面巡视标准化作业指导书
- 人教版七-九年级课文按文体分类目录
评论
0/150
提交评论