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

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

 更新時間:2016年06月13日 16:04:45   投稿:jingxian  
下面小編就為大家?guī)硪黄钊肜斫鈉++指針的指針和指針的引用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考,一起跟隨小編過來看看吧

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

為什么需要使用它們

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

如果我們在方法內(nèi)部修改指針會出現(xiàn)問題,在方法里做修改只是修改的指針的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;
}

看一下輸出結(jié)果

輸出的是兩個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)這個方法

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

•*p: 是被指向的指針,是一個地址。如果我們修改它,修改的是被指向的指針的內(nèi)容。換句話說,我們修改的是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++指針的指針和指針的引用就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

衡阳市| 徐水县| 建平县| 昭平县| 雅安市| 鄂伦春自治旗| 都昌县| 贵州省| 县级市| 屏东市| 荔波县| 汾阳市| 博白县| 延庆县| 惠水县| 五峰| 滕州市| 措勤县| 巫山县| 邳州市| 龙海市| 襄汾县| 黑河市| 建宁县| 星座| 连南| 鹿邑县| 泾阳县| 无棣县| 凌海市| 宕昌县| 贵定县| 房产| 孝昌县| 章丘市| 巴林左旗| 五莲县| 涡阳县| 马边| 肥西县| 始兴县|