本文主要是介绍【C++】【内附前辈贴】浅谈指针的指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先贴一个链接:如何理解指向指针的指针? 然后强调一下,结合前辈有助于消化指针的指针!!
下面博主动手实践,发此学习贴,希望对大家有些许帮助。
- 首先,定义一下整型常量和整型指针变量:
next,定义指针的指针(双重指针):int i = 4 ,j = 6 ,k = 111; int *iptr = &i, *jptr = &j;
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; }
这篇关于【C++】【内附前辈贴】浅谈指针的指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!