国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

深入理解c++指針的指針和指針的引用

2020-01-26 14:33:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

展示一下使用指針的指針和指針的引用修改傳遞給方法的指針,以便更好的使用它。(這里說(shuō)的指針的指針不是一個(gè)二維數(shù)組)

為什么需要使用它們

當(dāng)我們把一個(gè)指針做為參數(shù)傳一個(gè)方法時(shí),其實(shí)是把指針的復(fù)本傳遞給了方法,也可以說(shuō)傳遞指針是指針的值傳遞。

如果我們?cè)诜椒▋?nèi)部修改指針會(huì)出現(xiàn)問(wèn)題,在方法里做修改只是修改的指針的copy而不是指針本身,原來(lái)的指針還保留著原來(lái)

的值。我們用下邊的代碼說(shuō)明一下問(wèn)題:

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;}

看一下輸出結(jié)果

輸出的是兩個(gè)2

使用指針的指針

展示一下使用指針的指針做為參數(shù)

void func(int **p){  *p = &m_value;  // 也可以根據(jù)你的需求分配內(nèi)存  *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)這個(gè)方法

•p:  是一個(gè)指針的指針,在這里我們不會(huì)去對(duì)它做修改,否則會(huì)丟失這個(gè)指針指向的指針地址

•*p: 是被指向的指針,是一個(gè)地址。如果我們修改它,修改的是被指向的指針的內(nèi)容。換句話說(shuō),我們修改的是main()方法里 *pn指針

•**p:兩次解引用是指向main()方法里*pn的內(nèi)容

指針的引用

再看一下指針的引用代碼

int m_value = 1;void func(int *&p){  p = &m_value;  // 也可以根據(jù)你的需求分配內(nèi)存  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指向的內(nèi)容。

以上這篇深入理解c++指針的指針和指針的引用就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 礼泉县| 永德县| 承德县| 明溪县| 杭锦后旗| 林周县| 济南市| 若羌县| 连城县| 马山县| 祥云县| 赤城县| 阿尔山市| 雷山县| 红原县| 长沙市| 吴旗县| 桦川县| 湘西| 康马县| 绥棱县| 蕲春县| 徐水县| 湘阴县| 塘沽区| 蓝山县| 清水县| 汾西县| 卫辉市| 八宿县| 永州市| 巩义市| 孝感市| 龙州县| 婺源县| 宁夏| 稷山县| 丰都县| 虞城县| 潮州市| 宜兰县|