指標與引用傳參

2021-10-23 10:37:39 字數 1127 閱讀 7193

1.常量指標 const int *p=&a,指標的指向可以改,指標指向的值不可以改

2.指標常量 int * const p=&a,指標的指向不可以改,指標指向的值可以改

3.const既修飾指標,又修飾常量 const int * const p=&a

指標的指向和指標指向的值都不可以改

對於函式引數,例如寫乙個swap函式

void

swap01

(int a,

int b)

在main函式中呼叫時a,b的值卻沒有發生改變,這是因為引數a和b又建立了兩個記憶體來存放a和b的值,但在main函式中的a和b的值與該函式中a和b的位址不同,因此輸出結果不會改變。

但此時可以使用指標傳參

void

swap02

(int

* a,

int* b)

這樣傳的就是位址,交換的也是位址,因此main函式中的值會發生改變。

但一般多採用引用傳參,引用就是給乙個變數起乙個別名,引用的實質在c++內部實現是乙個指標常量,因此引用必須初始化 ,同時引用一旦初始化後就不能更改了 ,使用引用傳參和使用指標傳參效果一樣

void

swap03

(int

&a,int

&b)

全部**:

#include

using

namespace std;

//函式傳參時,可以利用引用讓形參修飾實參

//交換函式

//1.值傳遞

void

swap01

(int a,

int b)

//2.位址傳遞

void

swap02

(int

* a,

int* b)

//3.引用傳遞

void

swap03

(int

&a,int

&b)int

main()

指標陣列陣列傳參 指標引用傳參

指標和陣列作為引數傳入函式時,傳入的是位址,即指向變數的位址和陣列的首位址,可以在函式中改變指標或陣列的值,但本質上它們還是值的傳遞 區別於變數的值傳遞的是 變數值傳遞不會改變實參原來的值。我們無法對指標和陣列的位址進行操作 如 位址賦值,分配記憶體等 要進行位址操作需要使用指標引用或指標的指標。示...

引用傳參和指標傳參的差別

在c 中,如果函式的實參的型別是資料型別比較大的資料型別,這是如果使用一般傳參就會有很大的不方便,這是如果能夠傳遞乙個位址或者是對原來引數的乙個引用對提高效能會有很大的幫助。本文研究一下引用傳參和指標傳參的區別和聯絡。其實引用傳參和指標傳參都能夠在條用函式內部對源資料進行修改,這是它們的共同點,但是...

C C 傳值 傳址 傳引用與指標型形參

傳值 直接把實參拷貝乙份放入新開闢的記憶體,對拷貝後的數值進行相應的函式操作 傳址 把實參位址拷貝乙份放入新開闢的記憶體,通過拷貝的位址達到操作實參的目的 傳引用 沒有拷貝過程,直接對實參進行函式操作,引用只是對實參起了個綽號 實參的資料型別要和形參的資料型別保持一致 實參是位址時,形參時指標 實參...