C 中的指標與引用 如何引數傳遞

2021-09-23 21:19:08 字數 1251 閱讀 6376

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...