C 指標和引用的詳解

2021-09-26 23:03:32 字數 1290 閱讀 7719

定義:

int num=7;

int* p=#//這裡的指標p指向了num所對應的位址

傳參:
null指標

int *ptr=null;

if(ptr)//如果指標非空

if(!ptr)//如果指標為空

指標運算

指標和陣列

int var[max]=;

var++;//錯誤,相當於var=var+1陣列名對應指標常量,為不可修改的左值。

*(var+1)=100//正確,修改指標位址指向的數值。

指標陣列和陣列指標

int *ptr[max];按照優先順序,ptr為乙個容量為max的陣列,陣列中的元素型別為指向整形的指標。簡而言之即陣列元素儲存了位址。指標陣列可以指向字串陣列

指向指標的指標

int var=3000;//宣告乙個int型的變數,變數位址記憶體著var的值3000;

int ptr=&var;//宣告乙個int型的指標,指向變數var的位址;

intpptr=&ptr;//宣告乙個int型的指標,指向ptr的位址,

*pptr對二級指標pptr取值,也就是ptr的位址。

**pptr對ptr的位址取值

值傳遞、指標傳遞和引用傳遞

指標傳遞:#include using namespace std;

void swap(int*x,int*y)

int main()

int main();

int main(){

int x=5,y=6;

demo d;

int *p;

p=&x;

p=&y;//指標允許重新指向

int &r=x;

//&r=y;//編譯錯誤,引用不允許重新賦值

r=y;//r的值變為6

p=null;

//&r=null;//編譯錯誤,不能引用空值

r++;//r值變為7

cout<<&p<<" "<<&x"

qq.a=8;//引用使用"."

cout0x7ffd09172c20 0x7ffd09172c18

0x7ffd09172c18 0x7ffd09172c18

0x47

用於引數傳遞:

無論何時,當我們不需要重新修改指向時,引用要優於指標。

綜上所述,當你能使用引用的時候盡量使用引用,當你必須使用指標的時候就是用指標。但是如果我們想編寫用c和c++編譯器編譯的c**,我們就必須限制自己使用指標。

詳解c 指標的指標和指標的引用

展示一下使用指標的指標和指標的引用修改傳遞給方法的指標,以便更好的使用它。這裡說的指標的指標不是乙個二維陣列 當我們把乙個指標做為引數傳乙個方法時,其實是把指標的複本傳遞給了方法,也可以說傳遞指標是指標的值傳遞。如果我們在方法內部修改指標會出現問題,在方法裡做修改只是修改的指標的copy而不是指標本...

詳解c 指標的指標 和 指標的引用

注意 指向指標的引用是某一指標的別名,同變數的引用一樣。引用絕對不是單獨存在的,它一定是指示某個已經存在的東西的,它一定是某個已經存在的物體的 別名 而且它如果 被初始化賦值成某個變數後 它就始終是這個變數的替身 對引用的改變 就是對這個變數的改變 展示一下使用指標的指標和指標的引用修改傳遞給方法的...

詳解c 指標的指標和指標的引用

展示一下使用指標的指標和指標的引用修改傳遞給方法的指標,以便更好的使用它。這裡說的指標的指標不是乙個二維陣列 為什麼需要使用它們 當我們把乙個指標做為引數傳乙個方法時,其實是把指標的複本傳遞給了方法,也可以說傳遞指標是指標的值傳遞。如果我們在方法內部修改指標會出現問題,在方法裡做修改只是修改的指標的...