最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年06月13日 16:04:45   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇深入理解c++指針的指針和指針的引用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧

展示一下使用指針的指針和指針的引用修改傳遞給方法的指針,以便更好的使用它。(這里說(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è)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

清水县| 塔城市| 林周县| 汉沽区| 阿克苏市| 尖扎县| 宜良县| 北川| 辛集市| 博兴县| 萝北县| 南丹县| 蓬莱市| 黎城县| 奉化市| 陇西县| 新丰县| 乌兰县| 新平| 平邑县| 商南县| 印江| 铜川市| 奉节县| 浠水县| 武功县| 大厂| 大悟县| 即墨市| 隆安县| 平山县| 洛宁县| 南昌市| 即墨市| 镇坪县| 西畴县| 通州市| 灵宝市| 衡东县| 苍山县| 泽州县|