c++語言中,函式的引數和返回值的傳遞方式有3種:引用傳遞、指標傳遞和值傳遞。
1、引用傳遞
引用傳遞傳遞的是引用物件的記憶體位址。
引用傳遞的特點是:被調函式對形參的任何操作都會影響主調函式中的實參變數。
舉例說明:
#includeusing namespace std;
void swap3(int &p,int &q)
{ int temp;
temp =p;
p=q;
q=temp;
cout<
2、指標傳遞
指標是用來控制物件的記憶體位址的,它指向單個物件的位址,除了void指標型別外,指標的資料型別與所指向位址的變數資料型別須保持一致。
#includeusing namespace std;
void swap2(int *p,int *q)
{ int temp;
temp =*p;
*p=*q;
*q=temp;
cout<
3、值傳遞
值傳遞是指將要傳遞的值作為乙個副本傳遞。
在函式呼叫時,實參把它的值傳遞給對應的形參,方法執行中形參值不影響實參,即實參的值不會發生改變。即值傳遞的特點:被調函式對形參的任何操作都是作為區域性變數進行的,不會更改主調函式的實參變數的值。
舉例說明:
#includeusing namespace std;
void swap1(int p,int q)
{ int temp;
temp =p;
p=q;
q=temp;
cout<4、引用傳遞、指標傳遞和值傳遞的區別與聯絡
(1)、值傳遞與引用的區別
值傳遞傳遞的是值的乙個副本,函式對形參的操作不會影響實參的值;而引用傳遞傳遞的是引用物件的位址,函式的形參操作會直接影響實參的值,實參的值隨著形參的值的改變而改變
(2)、指標與引用的區別
指標是乙個實體,而引用是乙個別名,指標可以為空,即空指標,但引用不能為空;
引用初始化時必須指向乙個物件,之後不能變(但是物件其內容可變),而指標可變;
指標使用前須測試其合法性,防止為空,但引用不要測試其合法性;
引用無需解引用,但指標需要解引用;
sizeof引用得到的是所指物件的大小,而sizeof指標得到的是指標本身的大小,即物件位址的大小;
指標自增與引用自增意義不一樣;
在記憶體分配上,程式為指標變數分配記憶體區域,而引用不需要分配記憶體區域等。
C 中引用傳遞與指標傳遞的區別
最近garena面試的過程中,面試官提了乙個問題,c 中引用傳遞和指標傳遞的區別?根據自己的經驗,聯想到了swap函式,只知道既可以用引用來實現,又可以用指標傳遞來實現,至於二者有何區別,自己還真沒有考慮過。痛定思痛,受虐之後,趕緊彌補自己的知識漏洞。通過在網上蒐集資料,自己也整理了一下。精簡版 指...
引數傳遞與引用(C )
引用 是識別符號的別名 例如 int i,j int ri i 定義int引用ri,並初始化為變數i的引用 j 10 ri j 相當於i j c 標準中提供了兩種主要的方法 1 如果所有的實參型別相同,可以傳遞乙個名為initializer list的標準庫型別 2 如果實參的型別不同,我們可以編寫...
C 陣列引用傳遞與指標傳遞
include include include using namespace std class sourcefile explicit sourcefile const char filename data filename const char data int size int main i...