C 指標與引用小結

2021-10-09 08:03:46 字數 1811 閱讀 3443

c++還是比較難的。。。如果有理解錯誤,請一定不吝賜教。

指標其實就是乙個變數,只不過它儲存的是乙個位址,

其實我個人感覺真正彆扭的是,定義q的時候常規思路上是 *q = &a ,q應該是a的位址,但是實際上儲存位址的是變數q, 而q是索引位址所代表的值的。明白這一點,指標就應該沒大問題了。

int a =10;

int* q =

&a;// 列印q 與*q

cout << q << endl;

// 0x61fe14

cout <<

*q << endl;

// 10

這裡面個人感覺主要是看const的位置

第一種情況:

修飾整個int指標,那麼這個指標索引到的值,在指標儲存的位址不變時,不可發生改變,但是當你給它賦新的位址時,也可以順便修改指標位址所索引的值。

int a =10;

const

int* q =

&a;// 這裡修飾的是整個int型的指標

**黑馬程式設計師

那麼這種情況有啥用呢,當你傳入訊息時,如果只是用值傳遞,那麼會產生拷貝現象,會占用大量資源,那麼我們進行函式運算的時候,考慮使用位址傳入,但是位址傳入的時候,會修改位址所索引的值,那麼使用const int * q,這樣的傳入,即滿足了位址傳遞的效果,又不會使原資料進行修改,就滿足了需求。

那有意思的來了,如果在函式裡面,進行位址重新指向,原有的值會發生改變麼?

下面我們發現在函式中修改了,指標的索引,卻並沒有使主函式中的值有更改。

void

test

(const

int*q)

intmain()

// 輸出

1020

void

test

(int

**q)

intmain()

{int a =10;

int*q =

&a;int

**q1 =

&q;test

(q1)

; cout << a << endl;

cout <<

*q << endl;

int b =20;

q =&b; cout <<

*q << endl;

int a =10;

int b =20;

int*

const p;

// 指標常量

// p = &b;

*p =

20;

引用的實質就是就是上述指標的第二種情況。

int a =10;

int&c = a;

c =20

;//c = &b;

當我們將const 新增到引用之前,就是防止誤操作,

const

int& a;

const

int*

const a;

C 指標與引用

include 引用傳遞 int add1 int x,int y 指標傳遞 int add2 int x,int y 值傳遞 int add3 int x,int y void main int a 1 int b a 引用,表示b的引用指向了a 定義引用 開頭 必須賦初值 引用變數不占用記憶體 ...

C 指標與引用

從函式引數傳遞說起 int addition int x,int y int main void duplicate int a,int b int main 按值傳遞,顧名思義,函式形參僅僅得到變數傳來的值,函式的任何操作並不對變數產生任何變化 按位址傳遞,他的定義方式與按值傳遞不一樣 注意其在m...

C 引用與指標

1 引用即給當前物件起了個別名,通過將宣告符寫成 t c的形式來定義引用,其中t是變數名,c是當前物件的名字 修改別名相當於修改當前物件,引用必須初始化,且不能更改指向物件 example int a 10 定義a及初始化 int c a 定義a的引用c cout2 引用不是物件,只是對目前已經存在...