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

首頁 > 編程 > C++ > 正文

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

2020-05-23 14:02:50
字體:
來源:轉載
供稿:網友
下面小編就為大家帶來一篇深入理解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;}

看一下輸出結果

c++,指針

輸出的是兩個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;}

c++,指針

我們看一下 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;}

c++,指針

看一下func(int *&p)方法

•p: 是指針的引用,main()方法里的 *pn

•*p:是main()方法里的pn指向的內容。

以上這篇深入理解c++指針的指針和指針的引用就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全南县| 商水县| 五大连池市| 桃园市| 南康市| 临夏市| 乡宁县| 马鞍山市| 台中市| 科尔| 上栗县| 宜黄县| 三河市| 北碚区| 阳新县| 焦作市| 太湖县| 丹东市| 卢湾区| 诸城市| 阿克陶县| 微山县| 武穴市| 阳泉市| 祁东县| 措美县| 台东市| 保定市| 赣榆县| 泗阳县| 浦城县| 固镇县| 淄博市| 元朗区| 台南市| 嫩江县| 株洲市| 开远市| 察隅县| 阿瓦提县| 彝良县|