程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 深刻懂得c++指針的指針和指針的援用

深刻懂得c++指針的指針和指針的援用

編輯:關於C++

深刻懂得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++指針的指針和指針的援用就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved