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

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

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

  • 首先,定义一下整型常量和整型指针变量:
  • 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;
    }
    
    
    贴图验证:打印结果+局部变量截图


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值