黑马程序员技术交流社区
标题:
指针的指针的问题
[打印本页]
作者:
第一梦
时间:
2015-8-11 23:17
标题:
指针的指针的问题
本帖最后由 第一梦 于 2015-8-11 23:23 编辑
记得有一个题是这样的:
int a=5;
int *p=&a;
int *pp=&p;
int *ppp=&pp;
//题目要求通过指针ppp改变a的值
复制代码
分析可得下表:(假设地址从268748开始)
值
地址
整形变量a
5
268748
指针变量p
268748
268744
指针变量pp
258744
268740
指针变量ppp
268740
268736
继而得到打印出来 : *ppp 应该是 258744
*pp 是 268748
*p 是 5
想要通过ppp改变a的值,第一种想法是这个:
*( *( *ppp ) )
复制代码
但是我想出来之后第一感觉就是,这不对!
果然,编译器报错,大概是说*ppp是一个int型的数,不能再取“*”就是不能再次取值
后来尝试在 ppp 上用各种 & 和 * 的组合去取,比如*(&(*ppp)) , *(&*(&(ppp)))等,乱写了一通。
结果都以失败告终。弄得最后脑子都乱成一团了,脑细胞都翘了一大片了。
反省了一会儿才恍然大悟,单用应该ppp根本就不能直接改变a的值。我怀疑题目有问题,各位大神,帮忙解决一下问题吧!
作者:
第一梦
时间:
2015-8-11 23:21
要是按照题目的定义,**PP都是错误的形式
作者:
别欺骗小女生
时间:
2015-8-11 23:47
迷迷糊糊的 听了你的 如醍醐灌顶 透彻
作者:
tianmoqingcheng
时间:
2015-8-11 23:50
***p=a;赋值就可以通过p改变a了
作者:
wdcew
时间:
2015-8-12 00:09
不错不错!!!顶一下
作者:
1312878967
时间:
2015-8-12 20:42
***ppp=20;
QQ图片20150812203957.png
(4.41 KB, 下载次数: 19)
下载附件
2015-8-12 20:41 上传
作者:
飓风少年
时间:
2015-8-12 22:04
就是指针学的不好!愁四了
作者:
第一梦
时间:
2015-8-15 22:26
到最后,是题出的有问题,6楼的题目是正确的,但是分析思路还是对的。
作者:
庐山烟雨浙江潮
时间:
2015-8-16 00:30
先mark了,有机会再看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2