《C语言的动态记忆体配置12-4C语言的参考变数和范围.ppt》由会员分享,可在线阅读,更多相关《C语言的动态记忆体配置12-4C语言的参考变数和范围.ppt(32页珍藏版)》请在三一办公上搜索。
1、第12章 從C到C+語言,12-1 C+語言的基礎12-2 C+語言的輸出與輸入12-3 C+語言的動態記憶體配置12-4 C+語言的參考變數和範圍運算子12-5 C+語言的函數,12-1 C+語言的基礎,12-1-1 C+語言的歷史12-1-2 第一個C+程式12-1-3 C+語言的布林資料型態12-1-4 C+語言的運算子,12-1-1 C+語言的歷史-說明,C+語言是在1980年初期,Bjarne Stoustrup在AT&T貝爾實驗室著手開發的程式語言,在1983年定名為C+,1985年10月Bjarne Stoustrup出版The C+Programming Language,第一
2、版一書,這就是C+語言的標準版本。到了1990年,ANSI成立X3J16委員會制定標準的ANSI-C+,直到1997年11月才製定完成標準的ANSI-C+,事實上,1989年製定C語言的ANSI-C時,也曾參考C+語言的部分語法。,12-1-1 C+語言的歷史-C與C+,C+語言是將C語言擴充成一種物件導向的程式語言,其最初的目的是建立更有效率的C語言,C+語言可以視為程序式程式語言,只是新增物件導向的功能和一些改進程序式程式語言的語法。使用C+語言撰寫的程式可以使用傳統程序式程式設計(即C語言的寫法),也可以使用物件導向程式設計風格。,12-1-2 第一個C+程式-說明,C+程式架構類似C語
3、言,在Dev-C+新增原始碼檔案後,只需編輯好程式碼將它儲存成副檔名.cpp(C語言是.c),如此的程式碼檔案即是C+程式。,12-1-2 第一個C+程式-步驟1,步驟:建立C+程式和編輯程式內容Dev-C+一樣可以編輯、編譯和執行C+應用程式。,12-1-2 第一個C+程式-步驟2,步驟:編譯和執行C+應用程式請執行執行編譯並執行指令或按F9鍵,如果程式沒有錯誤,可以看到執行結果,在命令提示字元視窗顯示字串內容,如下圖所示:,12-1-2 第一個C+程式-架構,C+語言的程式架構和C語言相同,都是由含括標頭檔、函數和全域變數宣告、main()主程式和其它函數所組成,如下所示:01:/*程式範
4、例:Ch12-1-2.cpp*/02:#include 03:#include 04:/主程式 05:int main()06:07:/顯示訊息08:cout 第一個C+程式n;09:system(PAUSE);10:return 0;11:,12-1-2 第一個C+程式-程式註解,程式註解:第1和7列是程式註解,C+除支援C語言的標準註解/*和*/外,還新增/符號開始的文字列作為註解(這也是C99支援的註解),如下所示:07:/顯示訊息,12-1-2 第一個C+程式-標頭檔,標頭檔:第23列含括標題檔,標頭檔是C+語言基本輸出輸入串流的標頭檔。,12-1-2 第一個C+程式-主程式,主程式:
5、第511列的main()函數是C+程式的主程式,這是C+應用程式執行時的進入點,也就是說執行C+程式是從此函數開始,如下所示:05:int main()06:07:/顯示訊息08:cout 第一個C+程式n;09:system(PAUSE);10:return 0;11:,12-1-3 C+語言的布林資料型態-bool布林資料型態,C+語言支援C語言所有的資料型態,在ANSI-C+還支援bool布林資料型態,如下表所示:bool type=true;,12-1-3 C+語言的布林資料型態-變數宣告與初值,C+語言不同於C語言只能在程式區塊的開始宣告變數,C+語言允許在程式碼的任何位置,只要需要
6、使用變數即可宣告變數,在宣告變數後,指定初始變數值的方法,除了使用指定敘述,也可以在括號中指定初值,其語法如下:資料型態 變數名稱(初值);上述程式碼是在宣告變數時,指定其初值,例如:宣告整數a,如下所示:int a(10);int b=20;,12-1-4 C+語言的運算子-關係運算子(Relational Operators),C+語言支援布林資料型態bool,所以關係運算式的結果是布林值的變數,而不在是整數,其值只能是true或false(Dev-C+的GCC的實際值仍為1和0),例如:一些關係運算式的結果,如下所示:r1=(5=5)/true(true|false)變數r1和r2是bo
7、ol布林資料型態,其值分別為false和true,實際值是整數值是0和1。,12-1-4 C+語言的運算子-型態迫換(Type Casting Operators),C+語言除了相容C語言的型態迫換方式外,也可以使用新語法,也就是將迫換的變數置於型態的括號中,首先是C語言方式,如下所示:int i;float f=3.1415;i=(int)f;上述程式碼將浮點變數f迫換成整數,變數i的值為整數3。C+還可以將變數置於括號中進行型態迫換,如下所示:i=int(f);,12-2 C+語言的輸出與輸入,12-2-1 C+語言的輸出與輸入12-2-2 輸入一整行文字內容,12-2 C+語言的輸出與輸
8、入,C+語言提供全新標準輸出與輸入串流(Streams)來取代C語言的標準輸出和輸入函數scanf()和printf(),在標頭檔的C+函式庫支援2種資料串流,如下所示:cin:標準輸入串流。cout:標準輸出串流。,12-2-1 C+語言的輸出與輸入-說明,C+語言的cin和cout運算子的字頭為c字元,表示這是控制台(Console),in/out表示輸入與輸出。在C+程式只需含括標頭檔,就可以使用cin和cout運算子輸入和輸出資料,如下所示:#include,12-2-1 C+語言的輸出與輸入-cout運算子,C+程式只需將顯示字串或變數送到標準輸出cout運算子,就可以在螢幕上顯示,
9、其功能如同簡化的printf()函數,如下:cout 請輸入字串內容:;cout運算子還可以重複使用運算子在同一列程式碼輸出多個字串,如下所示:cout 字串內容:string 長度為:count n;,12-2-1 C+語言的輸出與輸入-cin運算子,cout運算子的相反操作是輸入資料,此時是使用的是cin運算子的輸入串流,如下所示:cin string;程式碼從標準輸入讀取字串,串流方向是從標準輸入使用運算子送到變數,最後存入字串變數string,在功能上如同scanf(%s)函數。,12-2-2 輸入一整行文字內容,cin是一個串流物件,提供成員函數getline()可以取得一整行的文字
10、內容,其原型宣告,如下所示:cin.getline(char buffer,int length,char delimiter=n);函數屬於cin物件的成員函數,使用.運算式呼叫,參數buffer是用來儲存輸入文字內容的字元陣列,length參數是讀取的最大字元數,也就是陣列長度,最後一個參數delimiter是判斷輸入結束,預設的參數值是新行字元n,即讀取到新行字元為止。,12-3 C+語言的動態記憶體配置-new運算子,在C+程式可以使用new運算子配置指定型態的記憶體空間,其語法如下所示:指標變數=new 資料型態;指標變數=new 資料型態 元素數;new運算子的使用有2種方式,第一
11、種是配置單一指定資料型態的記憶體空間,傳回相同型態的指標,如下所示:ptr2=new int;today=new date;,12-3 C+語言的動態記憶體配置-delete運算子,在C+程式使用new運算子配置的記憶體空間,可以使用delete運算子釋放指定型態的記憶體空間,其語法如下所示:delete 資料型態;delete 資料型態;new運算子的使用有2種方式,第一種是釋放配置單一元素型態的記憶體空間,第二種方式是釋放配置陣列的多個元素。,12-4 C+語言的參考變數和範圍運算子-參考變數Reference,參考變數是其它變數的別名,在宣告參考變數時,需要指定成其它變數的名稱,參考變數
12、的宣告和指標變數的宣告相似,其宣告的語法格式,如下所示:資料型態 變數名稱;宣告和指標變數宣告只是將變數名稱前的*號改為&符號(這就是取址運算子)。,12-4 C+語言的參考變數和範圍運算子-參考變數範例,整數變數別名的參考變數宣告,如下所示:int 指定敘述分別指定num=ref=15和ref=num=17,換句話說,變數num和ref位址屬性的記憶體位址是指同一個位址。,12-4 C+語言的參考變數和範圍運算子-範圍運算子(Scope Operators),如果函數中擁有同名的區域和全域變數,在C語言的函數並無法存取全域變數,因為存取的是同名的區域變數,C+語言提供:運算子可以存取全域變數
13、的值,如下所示::value=int(value)+7;程式碼的2個value變數,value是取得區域變數的值,:value是指定全域變數value的值。,12-5 C+語言的函數,12-5-1 函數過載12-5-2 inline函數12-5-3 參考變數的傳址呼叫12-5-4 預設的參數值,12-5-1 函數過載,C+語言的函數允許擁有兩個以上同名的函數,只是函數傳遞的參數個數或資料型態不同,稱為過載(Overload),如下所示:int square(int);double square(double);兩個同名函數的原型宣告只是參數的型態不同。接著是參數個數不同的函數範例,如下所示:i
14、nt getMax(int,int);int getMax(int,int,int);同名函數的參數個數為2和3。,12-5-2 inline函數,C+語言的inline函數主要針對一些小型且頻繁呼叫的函數,因為inline函數是直接在函數呼叫的程式列展開函數的程式碼,以便節省呼叫函數所花費的額外執行時間,加速程式的執行。在C+程式建立inline函數只需在函數前加上inline關鍵字,如下所示:inline int square(int no)return no*no;,12-5-3 參考變數的傳址呼叫-說明,參考變數的函數原型宣告,如下所示:void swap(int 上述2種函數原型宣告
15、都可以,參數列可以只列出型態,也可以連參數名稱一併列出,這2個參數x和y都是參考變數,如果函數使用參考變數傳遞,在函數中的程式碼就可以直接更改其參考的變數值,也就是呼叫時傳入的變數值。,12-5-3 參考變數的傳址呼叫-函數,函數swap()的完整程式碼,如下所示:void swap(int,12-5-4 預設的參數值,在C+的函數可以指定預設的參數值,換句話說,如果函數呼叫時沒有指定參數值,就是使用預設參數值,例如:預設參數值的函數呼叫,如下所示:int volume(int,int=2,int=3);int volume(int length,int width=2,int height=3);,