标题:关于指针地址~题目很水~却很容易出错~自己被这玩意坑了很久~
取消只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
已结贴  问题点数:20 回复次数:6 
关于指针地址~题目很水~却很容易出错~自己被这玩意坑了很久~
假设p是链表指针~并且不考虑链表长度溢出的话……

&p;//1
&p->next;//2
&p->next->next;//3
执行p=p->next;后
&p;//4
&p->next;//5
&p->next->next;//6


请试推测运行结果看看4,5,6中有那些值是可以在1,2,3里面能找到相等结果的?~
搜索更多相关主题的帖子: 指针 地址 出错 next 结果 
2017-05-22 02:33
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 2楼 renkejun1942
就是找它们之间的相等关系~6个值里面有多少组相等关系?~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 08:11
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
曾经在自己的通用链表为这个问题坑了很久~看了很久也看不出什么问题~最后找到原因了……说说调用p=p->next;然后再调&p的值和直接调用&p->next的值看看有没有不同~~

说明白点就是fun(&p->next)和p=p->next;fun(&p);有没有不同……~

[此贴子已经被作者于2017-5-22 08:24编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 08:21
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 9楼 renkejun1942
那你说说&p->next->next是什么东西?~怎么理解?~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 08:30
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 11楼 renkejun1942
对了~就是这部分坑了很久~~在二叉树调用二级指针会遇到类似的问题~

[此贴子已经被作者于2017-5-22 08:37编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 08:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 13楼 renkejun1942
这个理解了就行~到底还是值相等地址值不一定相等的问题~我之前还以为每个加&的值都只有唯一的带&变量对应~现在看来不一定了~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 08:45
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
还是总结一下~
&p->next其实写成&((*p).next)所指的是p所指向的结构体的next的地址~
&p->next->next可以写成&((*(*p).next).next)就是指p所指向下一个结构体的next的地址~这样虽然形式比较复杂~但看上去更直观一点~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 09:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477214-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.599309 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved