深刻懂得c++指針的指針和指針的援用。本站提示廣大學習愛好者:(深刻懂得c++指針的指針和指針的援用)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻懂得c++指針的指針和指針的援用正文
展現一下應用指針的指針和指針的援用修正傳遞給辦法的指針,以便更好的應用它。(這裡說的指針的指針不是一個二維數組)
為何須要應用它們
當我們把一個指針做為參數傳一個辦法時,實際上是把指針的復本傳遞給了辦法,也能夠說傳遞指針是指針的值傳遞。
假如我們在辦法外部修正指針會湧現成績,在辦法裡做修正只是修正的指針的copy而不是指針自己,本來的指針還保存著本來
的值。我們用下邊的代碼解釋一下成績:
int m_value = 1;
void func(int *p)
{
p = &m_value;
}
int main(int argc, char *argv[])
{
int n = 2;
int *pn = &n;
cout << *pn << endl;
func(pn);
cout << *pn <<endl;
return 0;
}
看一下輸入成果
輸入的是兩個2
應用指針的指針
展現一下應用指針的指針做為參數
void func(int **p)
{
*p = &m_value;
// 也能夠依據你的需求分派內存
*p = new int;
**p = 5;
}
int main(int argc, char *argv[])
{
int n = 2;
int *pn = &n;
cout << *pn << endl;
func(&pn);
cout << *pn <<endl;
return 0;
}
我們看一下 func(int **p)這個辦法
•p: 是一個指針的指針,在這裡我們不會去對它做修正,不然會喪失這個指針指向的指針地址
•*p: 是被指向的指針,是一個地址。假如我們修正它,修正的是被指向的指針的內容。換句話說,我們修正的是main()辦法裡 *pn指針
•**p:兩次解援用是指向main()辦法裡*pn的內容
指針的援用
再看一下指針的援用代碼
int m_value = 1;
void func(int *&p)
{
p = &m_value;
// 也能夠依據你的需求分派內存
p = new int;
*p = 5;
}
int main(int argc, char *argv[])
{
int n = 2;
int *pn = &n;
cout << *pn << endl;
func(pn);
cout << *pn <<endl;
return 0;
}
看一下func(int *&p)辦法
•p: 是指針的援用,main()辦法裡的 *pn
•*p:是main()辦法裡的pn指向的內容。
以上這篇深刻懂得c++指針的指針和指針的援用就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。