先貼出**
void testreference::fun1(person *p)
void testreference::fun2(person *p)
void testreference::fun3(person* &p)
函式fun1傳入乙個指標,在函式內對p進行賦值,fun2傳入乙個指標,修改iage,函式fun3傳入乙個指標的引用,對其進行賦值,接下來使用這三個函式
testreference test;
person *p1 = null;
test.fun1(p1);
if(null==p1)
{ cout<<"失敗"函式fun2很好理解,很多人糊塗的是1和3的區別
指標,指向了乙個位址,函式fun2拿到這個位址,然後改變了iage
函式fun1拿到了這個指向null的位址,然後想通過賦值操作,修改p1所指向的位址,但這是不可能的,如果想要這麼做,就必須用fun3的方式,必須傳遞乙個指標的引用,這樣,函式體內對它的修改才是有效的。
指標的指標和指標的引用
1,使用指標的指標和指標的引用的原因 當我們把乙個指標做為引數傳乙個方法時,其實是把指標的複本傳遞給了方法,也可以說傳遞指標是指標的值傳遞。如果我們在方法內部修改指標會出現問題,在方法裡做修改只是修改的指標的copy而不是指標本身,原來的指標還保留著原來的值。我們用下邊的 說明一下問題 int m ...
指標引用和引用指標的區別
c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...
c 指標的指標和指標的引用
當我們把乙個指標做為引數傳乙個方法時,其實是把指標的複本傳遞給了方法,也可以說傳遞指標是指標的值傳遞。如果我們在方法內部修改指標會出現問題,在方法裡做修改只是修改的指標的copy而不是指標本身,原來的指標還保留著原來 的值。我們用下邊的 說明一下問題 輸出的是兩個2 展示一下使用指標的指標做為引數 ...