【C++】【内附前辈贴】浅谈指针的指针

来源:互联网 发布:星巴克糕点搭配知乎 编辑:程序博客网 时间:2024/06/05 05:20

首先贴一个链接:如何理解指向指针的指针? 然后强调一下,结合前辈有助于消化指针的指针!!

下面博主动手实践,发此学习贴,希望对大家有些许帮助。

  • 首先,定义一下整型常量和整型指针变量:
  • int i = 4 ,j = 6 ,k = 111;int *iptr = &i, *jptr = &j;
    next,定义指针的指针(双重指针):
  • int **doublePtr = &iptr;
    • 现在指针iptr 指向了i,jptr 指向了 j; *iptr 就是 i,**doublePtr 就是 i,或者说是 4。
    • 下面用我们盒子箭头图来描述,像这样:


  • finally,双重指针令指向jptr :[接着这么写]
  • *doublePtr = jptr;
    • 我们把 jptr指向对象地址值赋给 doublePtr 。也就是说 iptr 现在它指向了 j【这个地方最绕!】,指针传递的是实参,相当于iptr所指对象i的地址值被修改成j的地址值,然后按照地址查找对象的值,因而i没变,只是iptr重新指向了一个新的对象而已!而已!




  • 全部代码:
  • /* 功能:Excercise3.5.4 */ #include <iostream>using namespace std;//定义在全局作用域中int main()//定义在局部作用域中的数组{int i = 4 ,j =6;int *iptr = &i, *jptr = &j;int **doublePtr = &iptr;cout << "指针iptr所指对象在内存中的地址及对象值分别为:" << iptr << "  " << *iptr << endl;cout << "指针jptr所指对象在内存中的地址及对象值分别为:" << jptr << "  " << *jptr << endl;cout << "指针iptr自身在内存中的地址及值分别为:" << *doublePtr << "  " << **doublePtr << endl;*doublePtr = jptr;cout << "指针jptr自身在内存中的地址及值分别为:" << *doublePtr << "  " << **doublePtr << endl;cout << "最终验证,经过重新指向后,指针iptr所指对象在内存中的地址及对象值分别为:" << iptr << "  " << *iptr << endl;system("pause");return 0;}
    贴图验证:打印结果+局部变量截图


原创粉丝点击