第二次課C++在非面向對象方面對C的擴充_第1頁
第二次課C++在非面向對象方面對C的擴充_第2頁
第二次課C++在非面向對象方面對C的擴充_第3頁
第二次課C++在非面向對象方面對C的擴充_第4頁
第二次課C++在非面向對象方面對C的擴充_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1第第2章章 從從C到到C+第第2章章 C+在非面向對象方面對在非面向對象方面對C的擴充的擴充2第第2章章 從從C到到C+C語言是C+的子集,C+包含了C語言的全部內容。一個C語言編寫的程序不經修改,就可以利用C+編譯器編譯,形成可執(zhí)行代碼。 C+對C語言注入了面向對象的新概念,同時也增加了一些非面向對象的新特性,這些新的特性使得C+程序更簡潔或更安全。3第第2章章 從從C到到C+2.1 C+2.1 C+中的注釋語句中的注釋語句 在程序中,注釋語句的作用主要有兩個:(1)讀程序的方便,程序員通常會增加一些說明性的文字;(2)程序過程中,如果對于某(幾)條語句,暫時不能決定是否需要刪除時可以暫時

2、將其注釋。 4第第2章章 從從C到到C+C+中提供了兩種類型的語句注釋方法:(1)塊注釋:即使用/*開始,*/結束的形式,這種形式不允許出現(xiàn)注釋嵌套,主要用于多行注釋,例如程序開頭的功能說明,版權說明等信息;(2)行注釋:即以“/”開始,直到行結尾結束的注釋。這種方式多用于注釋單行,或在一行的后面添加說明語句。這種注釋方式允許嵌套使用。5第第2章章 從從C到到C+下面用一個例子說明C+中兩種注釋語句的用法:/*這是一個說明C+中注釋語句的例子 當前使用的塊注釋方式*/class MyComplex /這是用C+定義的一個復數(shù)類 /這是一條行注釋,我在嵌套/private:double x;do

3、uble y; void display();上面的例子中前兩句采用了塊注釋;第三行在行末使用行注釋說明本條語句的作用,并且使用了注釋嵌套;第四行用行注釋注釋掉一行。 6第第2章章 從從C到到C+2.2 C+中的輸入輸出 在C+中,除了可以利用C語言中的標準輸入輸出外,也可以通過輸入輸出流類庫進行。所謂“流”是指來自設備或輸出到設備的一系列字節(jié),這些字節(jié)按照進入“流”的順序排列。iostream類是最常用的流庫,它提供了用于從標準輸入設備(默認為鍵盤)輸入的默認對象cin和輸出到標準輸出設備(默認為顯示器)的對象cout。利用cin和cout就可以完成數(shù)據(jù)的基本輸入和輸出。 7第第2章章 從從

4、C到到C+ 運算符“”在C+中仍保持C中的右移功能,但用于輸入時擴充了其功能,表示將從標準輸入流(即鍵盤)讀取的數(shù)值傳送給右方指定的變量。例如: cinx;此時,用戶從鍵盤輸入的數(shù)值會自動轉換為變量用戶從鍵盤輸入的數(shù)值會自動轉換為變量x x的的類型,并存入變量類型,并存入變量x x內內。 運算符“”允許用戶連續(xù)輸入一連串數(shù)據(jù),例如: cinabc;它按照書寫的順序從鍵盤上提取所要求的數(shù)據(jù),并存入對應的變量中。兩個數(shù)據(jù)間用空白符(空格、兩個數(shù)據(jù)間用空白符(空格、回車或一個回車或一個TabTab鍵)分隔。鍵)分隔。8第第2章章 從從C到到C+ 運算符“”在C+中仍然保持C中的“左移”操作,但用于輸

5、出時候擴充了其功能,表示將右方的變量的值寫到標準輸出流cout中,即顯示到屏幕上。例如執(zhí)行下面語句后: cout y;變量y的值將顯示到屏幕上。 運算符運算符“”允許用戶連續(xù)輸出一連串的數(shù)允許用戶連續(xù)輸出一連串的數(shù)據(jù),也可以輸出表達式的值,例如:據(jù),也可以輸出表達式的值,例如: coutcout a + bc; a + bc;它按照書寫的順序輸出到屏幕上。9第第2章章 從從C到到C+說明:說明:(1) 如果在程序中使用cin和cout,必須將頭文件包含到本文件中:#include (2)使用“cin”可以連續(xù)輸入多個數(shù)據(jù),但是由于用戶常常忘記空白符號(空格、回車或一個Tab鍵)來分隔兩個數(shù)值,

6、容易造成輸入混亂,因此使用時要加以注意。10第第2章章 從從C到到C+ cout的一般形式為: cout表達式1變量1變量n; 例如: cinab; cout“a=”a“,b=”b; 當輸入1 2時,1被送給了a,2被送給了b。得到的輸出形式為: a=1,b=211第第2章章 從從C到到C+ (3) cin或cout語句可以寫在同一行上,也可以分開寫在多行上。如果寫在多行上,除最后一行外,行尾不能加分號。 cout“x = ”x “y = ”y; (4) 利用cin和cout,在輸入輸出時不必考慮變量或表達式的類型。對于cout,系統(tǒng)會自動判斷正確的類型并進行輸出;對于cin,系統(tǒng)也能夠會根據(jù)

7、變量的類型從輸入流中提取相應長度的字節(jié)。12第第2章章 從從C到到C+ (5) 如果需要將數(shù)據(jù)換行輸出,可以插入一個換行符endl,如: cout”Hello”endl;/cout對象被插入一個endl cout”world!”; 輸出結果為: Hello World!13第第2章章 從從C到到C+2.3 變量和類型.變量定義方法C+中幾乎可以在任何位置、任何時刻根據(jù)需要定義局部變量。 【例21】靈活變量定義的例子。 #include int sum=0; /在函數(shù)體外定義變量sumvoid main() int a5=0,1,2,3,4; for(int i=0;i5;i+) /在for語句

8、中定義變量i sum+=ai; double avg=sum/5; /在語句體中定義變量avgcoutsum=sum,average=avgendl;cout”i=”iendl;14第第2章章 從從C到到C+ 2. 枚舉,結構體和共用體 C+中,枚舉名,結構名和共用體名的定義與C語言中基本相同,但在使用時更方便。當實例化變量時,不必在一個枚舉名、結構名或共用體名之前再加上類型名。 15第第2章章 從從C到到C+可以采用如下的形式進行定義變量:COLOR c;/定義一個COLOR型變量cTIME t;/定義一個TIME型變量tSALARY s;/定義一個SALARY型變量s不必象C語言那樣寫成如

9、下形式:enum COLOR c;/定義一個COLOR型變量cstruct TIME t;/定義一個TIME型變量tunion SALARY s;/定義一個SALARY型變量s16第第2章章 從從C到到C+3. const修飾符 在編寫程序時經常需要定義常量,C+中保留了C語言中采用#define進行定義的方式,如下列語句就定義了一個符號常量MAX_SIZE,用于代表100: #define MAX_SIZE 100 C+中引入一種更靈活、更安全的方式來定義常量,即使即使用用constconst關鍵字定義常量(也稱為只讀變量),如:關鍵字定義常量(也稱為只讀變量),如: const int m

10、axSize100;maxSize為一個int型的常變量,它的值為100,并且在整個運行過程中不允許被改變。17第第2章章 從從C到到C+const除了可以用于定義普通的常變量之外,也可以用于定義常指針。它們的組合情況可以歸納為三種:指向常量的指針、常指針和指向常量的常指針。1)指向常量的指針:一個指向常量的指針變量。例如:const char *name=“chen”;2)常指針:指指針本身,而不是它所指向的對象為常量。例如:char * const p =hello; 3)指向常量的常指針:指針本身不能改變,它所指向的值也不能改變。例如: const char *const name=“c

11、hen”;18第第2章章 從從C到到C+【例22】const和指針結合的例子void main() char s=good; char *p1= hello; / 非const指針 const char *p2= s; / const數(shù)據(jù) *p2=G;/錯誤 p2=p1; /正確 char* const p3= s; / const指針,非const數(shù)據(jù) *p3=G;/ 正確 p3=p1;/ 錯誤 const char* const p4 = s; / const指針,const數(shù)據(jù) *p4=G;/ 錯誤 p4=p1;/ 錯誤19第第2章章 從從C到到C+說明:(1) 如果用const定義的是

12、一個整型的常量,關鍵字int可以省略。下面兩行定義是等價的: const int LIMIT=100; const LIMIT=100;(2) 常量一旦被建立,在程序的任何地方不能再修改。(3) 與define定義的常量有所不同,const定義的常量可以有自己的數(shù)據(jù)類型,這樣C+的編譯程序可以進行更嚴格的類型檢查,具有良好的編譯時的檢測性。20第第2章章 從從C到到C+【例23】說明使用define的不安全性。#include main() int a=1; #define T1 a+a coutT1 is T1endl; #define T2 T1-T1 coutT2 is T2endl;

13、return 0;21第第2章章 從從C到到C+【例24】使用const取代define。#include main() int a=1; const T1= a+a; coutT1 is T1endl; const T2= T1-T1; coutT2 is T2endl; return 0;22第第2章章 從從C到到C+const的另外一個用途是:如果某個函數(shù)參數(shù)不允許被改變時,如果某個函數(shù)參數(shù)不允許被改變時,可用可用constconst將其聲明為常變量。將其聲明為常變量。例如:【例25】使用const修飾函數(shù)參數(shù)。 #include void fun(const int m) m=10;

14、/錯誤,函數(shù)不能修改m,只能使用m coutm+100; /正確,使用m void main() int n=10; fun(n); coutn; /輸出 1023第第2章章 從從C到到C+4.強制類型轉換 在C中如果要把一個整數(shù)(int)轉換為浮點數(shù)(float),要求使用如下的格式: int i=10; float x=(float)i;C+支持這樣的格式。還提供了一種更為方便的函數(shù)調用方法,即將類型名作為函數(shù)名使用,使得類型轉換的執(zhí)行看起來好像調用了一個函數(shù)。上面的語句可以改寫成: int i=10; float x=float (i); 24第第2章章 從從C到到C+5.作用域運算符“

15、:”通常情況下,如果有兩個同名變量,一個是全局的,另外一個是局部的,那么局部變量在其作用域內具有更高的優(yōu)先權。下面的例子說明了這一點?!纠?6】局部變量具有更高的優(yōu)先權。#include int avar=10;main()int avar;avar=25;coutavar is avarendl;return 0;程序的執(zhí)行結果如下:程序的執(zhí)行結果如下:avar is 2525第第2章章 從從C到到C+【例27】使用作用域運算符“:”。#include int avar;main()int avar;avar=25;:avar=10;coutlocal avar = avarendl;cou

16、tglobal avar = :avarendl;return 0;程序的執(zhí)行結果如下:程序的執(zhí)行結果如下:local avar = 25Global avar=1026第第2章章 從從C到到C+2.4 C+2.4 C+中的函數(shù)中的函數(shù) C+保留了C語言中與函數(shù)有關的所有約定,例如函數(shù)定義格式,參數(shù)傳遞方式等。同時,C+對于函數(shù)也進行了一定的擴充,例如允許為函數(shù)的形參設定默認值,允許函數(shù)重載,引入了inline函數(shù)等。 27第第2章章 從從C到到C+1、函數(shù)的原型 C語言建議編程者為程序中的每一個函數(shù)建立原型,而C+要求必須為每一個函數(shù)建立原型,以說明函數(shù)的名稱、參數(shù)類型與個數(shù),以及函數(shù)返回值

17、的類型。 函數(shù)原型的語法形式一般為:函數(shù)原型是一條語句,它必須以分號結束。它由函數(shù)的返回類型、函數(shù)名和參數(shù)表構成。參數(shù)表包含所有的參數(shù)及它們的類型,參數(shù)之間用逗號分開。 返回類型 函數(shù)名(參數(shù)表);28第第2章章 從從C到到C+【例28】函數(shù)原型的使用。#include void write(char *s);/函數(shù)的原型說明main() write(hello, world); return 0;void write(char *s) coutsendl; 29第第2章章 從從C到到C+ 函數(shù)原型的參數(shù)表中可不包含參數(shù)的名字,只包含類函數(shù)原型的參數(shù)表中可不包含參數(shù)的名字,只包含類型。例如下面

18、的函數(shù)原型是完全合法的:型。例如下面的函數(shù)原型是完全合法的: int area(int, intint area(int, int);); 函數(shù)定義由函數(shù)說明部分和函數(shù)體構成。函數(shù)說明部分函數(shù)定義由函數(shù)說明部分和函數(shù)體構成。函數(shù)說明部分與函數(shù)原型基本一樣,但函數(shù)說明部分中的參數(shù)必須給出名與函數(shù)原型基本一樣,但函數(shù)說明部分中的參數(shù)必須給出名字,而且不包含結尾的分號字,而且不包含結尾的分號;例如:;例如: int area(int length,intint area(int length,int width) width) return (length return (length* *widt

19、h);width); 主函數(shù)主函數(shù)main( )main( )不必進行原型說明,因為它被看作一個不必進行原型說明,因為它被看作一個自動說明原型的函數(shù)。主函數(shù)是第一個被執(zhí)行的函數(shù),不存自動說明原型的函數(shù)。主函數(shù)是第一個被執(zhí)行的函數(shù),不存在被別的函數(shù)調用的問題。在被別的函數(shù)調用的問題。30第第2章章 從從C到到C+ 函數(shù)原型說明中沒有指出返回類型的函數(shù)(包括main( ) ),C+默認該函數(shù)的返回類型是int。 如果一個函數(shù)沒有返回值,則必須在函數(shù)原型前注明返回值類型為void。 如果函數(shù)原型中未注明參數(shù),C+假定該函數(shù)的參數(shù)表為空(void),即不帶任何參數(shù)。31第第2章章 從從C到到C+2.

20、帶有默認參數(shù)值的函數(shù) 函數(shù)調用時,主調函數(shù)和被調函數(shù)存在著數(shù)據(jù)傳遞關系,即主調函數(shù)需要將實參的值傳遞給形參。 如果某個函數(shù)在多次被調用的情況下都需要使用某個參數(shù)值,此時就可以為該函數(shù)設置默認值。例如函數(shù)max的函數(shù)說明為: int max(int a=2,int b=3)這里為max的形參a和b分別指定了默認值2和3。 當進行函數(shù)調用的時候,編譯器按照從左向右的順序將實參與形參結合,若未指定足夠的實參,則編譯器按順序用函數(shù)原型中的缺省值來補足所缺少的實參。32第第2章章 從從C到到C+例如,在主調函數(shù)中可以使用如下形式調用max函數(shù): z=max();/省略兩個實參值, /相當于語句 z=ma

21、x(2,3); z=max(5);/省略第2個實參值, /相當于語句z=max(5,3); z=max(-1,4);/忽略函數(shù)默認參數(shù)值33第第2章章 從從C到到C+使用函數(shù)參數(shù)默認值時需要注意如下幾點:使用函數(shù)參數(shù)默認值時需要注意如下幾點: (1) 當為函數(shù)指定默認參數(shù)值時,必須按照由右到左的順序進行指定,決不允許存在一個參數(shù)指定默認值,而它右邊的參數(shù)沒有默認值的情況。 例如函數(shù)聲明: int f1(int a,int b=2,int c=3); /正確 int f2(int a=1,int b=2,int c); /錯誤,c沒有默認值,/所以不能為a和b指定默認值 int f3(int a

22、=1,int b,int c=3); /錯誤,b沒有默認值, /所以不能為a指定默認值34第第2章章 從從C到到C+(2) 如果設置了默認參數(shù)的函數(shù)定義在主調函數(shù)之前,可以省略函數(shù)聲明語句;否則在調用前必須有函數(shù)聲明語句,且聲明語句中必須指明參數(shù)默認值。35第第2章章 從從C到到C+以下是幾個采用函數(shù)默認值的例子以下是幾個采用函數(shù)默認值的例子 :(1)void print(int a=2);void main() print();void print(int a) coutaendl;(2)void print(int a);void main() print();void print(int

23、 a=2) coutaendl;(3)void print(int a=2 );void main() print();void print(int a=2) coutab?a:b;void main()int x=2,y=3,z;z=max(x,y);coutzy?x:y;39第第2章章 從從C到到C+說明:(1)內聯(lián)函數(shù)在被調用之前必須進行完整的定義,否則編譯器將無法知道應該插入什么代碼。內聯(lián)函數(shù)通常寫在主函數(shù)前。(2)C+的內聯(lián)函數(shù)具有與C中的宏定義#define相同的作用和相似的原理,但消除了#define的不安全因素。請看下面兩個例子:40第第2章章 從從C到到C+【例29】使用帶參

24、數(shù)宏定義完成乘2的功能。#include #define doub(x) x*2int main() for(int i=1;i=3;i+) couti doubled is doub(i)endl; cout1+2 doubled is doub(1+2)endl; return 0;程序的執(zhí)行結果如下:程序的執(zhí)行結果如下:1 doubled is 22 doubled is 43 doubled is 61+2 doubled is 541第第2章章 從從C到到C+【例210】使用內聯(lián)函數(shù)完成乘2的功能。#include inline int doub(int x) return x*2;

25、 int main()for(int i=1;i=3;i+)couti doubled is doub(i)endl;cout1+2 doubled is doub(1+2)endl;return 0;程序的執(zhí)行結果如下:程序的執(zhí)行結果如下:1 doubled is 22 doubled is 43 doubled is 61+2 doubled is 642第第2章章 從從C到到C+注意: 并非在函數(shù)定義時加上inline,編譯系統(tǒng)就一定會將其看作inline函數(shù)。關鍵字inline只是給編譯系統(tǒng)提供一個建議,希望編譯系統(tǒng)在編譯時能將函數(shù)代碼替換到函數(shù)調用位置,但是如果函數(shù)中存在循環(huán)語句,s

26、witch語句,或存在數(shù)組定義時,編譯系統(tǒng)將不知道應該如何替換,只能將其按照普通函數(shù)處理。 因此,只有那些不包含循環(huán)和switch選擇結構,不包含數(shù)組定義,并且代碼行數(shù)較少(建議不超過5行)的函數(shù)才適合設計成inline函數(shù)。 43第第2章章 從從C到到C+4.函數(shù)重載 在C+中,一個函數(shù)名可以對應多個不同的函數(shù)。當兩個或兩個以上的函數(shù)共用一個函數(shù)名時,稱為函數(shù)重載 。被重載的函數(shù)稱為重載 函數(shù)。 函數(shù)重載有兩種基本的方式:一種是函數(shù)參數(shù)個數(shù)相同,但類型有所不同的重載,另外一種是函數(shù)參數(shù)個數(shù)也不同的重載。 44第第2章章 從從C到到C+【例211】參數(shù)類型不同的函數(shù)重載的例子#include

27、int max(int a,int b) return ab?a:b;double max(double a,double b)return ab?a:b;void main()coutmax(10,5)endl;/調用第1個max函數(shù)coutmax(10.5,5.0)endl;/調用第2個max函數(shù) 45第第2章章 從從C到到C+【例2-12】形參個數(shù)不同的函數(shù)重載的例子。#include int max(int a,int b)return ab?a:b;int max(int a,int b,int c)int d=max(a,b);return dc?d:c;void main()co

28、utmax(10,5)endl;/調用第1個max函數(shù)coutmax(10,5,2)endl;/調用第2個max函數(shù)46第第2章章 從從C到到C+注意:(1) 面向對象中不支持函數(shù)參數(shù)個數(shù)和參數(shù)類型都相同,但函數(shù)返回類型不相同的重載方式。(重載函數(shù)應該在參數(shù)個數(shù)或參數(shù)類型上有所不同,否則編譯器沒有辦法確定調用哪一個重載版本。)(2) 通常重載的函數(shù)應該具有相同或相似的功能,不應出現(xiàn)兩個同名函數(shù)提供完全不同或差異太大的功能,這樣在編程過程中很容易產生混淆,不利于程序的編寫和閱讀。只有在某個函數(shù)需要處理不同類型的參數(shù)或者不同個數(shù)的參數(shù)時,才需要進行重載,其他時候沒有重載的必要。 47第第2章章 從

29、從C到到C+2.5動態(tài)內存分配 對于一個程序單元而言,可以有兩種獲得內存的方式:靜態(tài)內存分配和動態(tài)內存分配。前者是在編譯階段就分配好存儲空間,并且這些空間的大小在程序運行期間是不可更改的,例如全局變量,數(shù)組等的分配;后者則是由程序員在程序中通過使用內存分配函數(shù)或使用內存分配運算符從系統(tǒng)堆(一塊自由存儲區(qū))中獲取存儲空間。靜態(tài)獲得的內存,系統(tǒng)在變量等生命期結束時自動回收,動態(tài)獲得的空間需要程序員通過語句或運算顯式地釋放。48第第2章章 從從C到到C+1.new運算符 C語言中使用函數(shù)malloc( )和free( )動態(tài)分配內存和釋放動態(tài)分配的內存。C+中使用運算符new和delete能更好地、

30、更簡單地進行內存的分配和釋放。 new運算符用于動態(tài)分配一塊連續(xù)的內存空間,其基本語法形式有: new /*從一塊自由存儲區(qū)中分配一塊sizeof(type)字節(jié)大小的內存。*/其中,其中,type可以是可以是C+支持的所有數(shù)據(jù)類型名,可支持的所有數(shù)據(jù)類型名,可以是基本的數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型。以是基本的數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型。49第第2章章 從從C到到C+ new運算符返回一個指向所分配的存儲空間的第1個單元的指針,如果當前存儲器沒有足夠的內存空間可分配,則返回NULL。例如:int * p1=new int; /分配一個用于存儲1個整型數(shù)據(jù)的連續(xù)區(qū)域,/并將首地址返回給

31、p1使用new可以為數(shù)組動態(tài)分配空間,這時候需要在類型名后加上數(shù)組的大小。 int * p1=new int1;int* p2=new int10; /分配一個整型的一維數(shù)組/ (大小為10個整型數(shù)據(jù)),并將首地址返回給p2int * p3=new int45;/分配一個整型數(shù)組能存儲 /一個45的二維數(shù)組,并將首地址返回給p3使用使用newnew動態(tài)分配內存動態(tài)分配內存的時候,如果沒有足夠的時候,如果沒有足夠的內存滿足分配要求,的內存滿足分配要求,newnew將返回空指針將返回空指針(NULL).(NULL).因此,通常要對內存的因此,通常要對內存的動態(tài)分配是否成功進行檢查動態(tài)分配是否成功進

32、行檢查50第第2章章 從從C到到C+2.delete運算符 對于動態(tài)分配的內存在使用完后,一定要及時歸還給系統(tǒng)。如果應用程序對有限的內存只取不還,系統(tǒng)很快就會因為內存枯竭而崩潰。利用new動態(tài)分配的存儲空間通??梢岳胐elete運算進行釋放。delete運算符的基本語法形式有: delete 指針變量 /指針變量中保存的是 / new分配的內存首地址delete 指針變量 /釋放動態(tài)分配的數(shù)組存儲區(qū)51第第2章章 從從C到到C+使用delete釋放內存空間時,應注意以下幾點: (1)利用new運算符分配的內存空間,只許使用一次delete,如果對同一塊空間進行多次釋放,將會導致嚴重錯誤。(2

33、)delete只能用來釋放動態(tài)分配的內存空間。52第第2章章 從從C到到C+【例2-13】使用new和delete的例子。#include main()int *p;p=new int;if(!p) /若動態(tài)分配內存失敗時, coutallocation failuren; return 1;*p=20;cout*p;delete p;return 0;53第第2章章 從從C到到C+2.6 引用1. 引用的定義與特點 所謂引用,就是給變量取個別名,定義引用的基本格式為:(1)類型 &引用名變量名;(2)類型 &引用名(變量名);引用必須初始化。例如:int n;/定義整型變量n

34、int &refn=n;/為n定義一個別名refn引用與被引用的變量具有相同的地址,因而對引用的存取就是對變量的存取。當實體或引用其中一個發(fā)生變化,另一個也隨之改變。 54第第2章章 從從C到到C+【例214】引用的例子。#include void main() int n=2; int &refn=n;/為n定義一個別名refn cout&n=&n,&refn=&refnendl;/輸出n和refn的地址 coutn=n,refn=refnendl; n+=5; /修改變量的值 coutn=n,refn=refnendl; refn*=2; /

35、修改引用的值 coutn=n,refn=refnendl; 輸出結果為:輸出結果為:&n=0013FF60,&refn=0013FF60n=2,refn=2n=7,refn=7n=14,refn=1455第第2章章 從從C到到C+2、 引用作函數(shù)的參數(shù) C語言中,實參和形參之間的數(shù)據(jù)傳遞采用的是單向的值傳遞方式:要求實參和形參的類型和個數(shù)要一致。實參將 “單向性”的“值傳遞”給形參。在被調函數(shù)中對形參的值的修改不會影響到實參。當函數(shù)未被調用時,形參不占內存。當函數(shù)被調用時,為形參分配內存,并將實參的值傳遞給形參;函數(shù)調用結束時,釋放形參所占存儲空間?!纠?14】值傳遞的例子。5

36、6第第2章章 從從C到到C+主調函數(shù)主調函數(shù)被調函數(shù)被調函數(shù)includevoid swap(int,int);void main ()int a,b;a=5;b=9;swap(a,b);cout“a=“a“b=“b;swap (int x,int y) int t; t=x; x=y; y=t;55ab實實 參參形形 參參99xyabxy9557第第2章章 從從C到到C+通常,可以利用指針可以解決這一問題?!纠?15】#include void swap(int *a,int *b) int t=*a; a=a=b; *b=t;void main() int a=2,b=3; couta=a

37、,b=bendl; swap(a,b); couta=a,b=bendl;輸出結果:輸出結果:a=2,b=3a=3,b=258第第2章章 從從C到到C+主調函數(shù)主調函數(shù)被調函數(shù)被調函數(shù)&a實實 參參形形 參參&b*x*yabvoid swap(int *x,int *y) int t; t=*x;*x=*y;*y=t; #includevoid swap(int*,int *);void main()int a,b;a=5;b=9;swap( &a, &b );cout“a=”a“b=“b;5ab9xy&b&a9559第第2章章 從從C到到C+【例2-16】例2-14的改寫。#include void swap(int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論