| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1714 人关注过本帖
标题:关于指针地址~题目很水~却很容易出错~自己被这玩意坑了很久~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:18 
关于指针地址~题目很水~却很容易出错~自己被这玩意坑了很久~
假设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
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:10 
&p 取的是指针的地址的呀。
你后面的几条语句都是取指针地址,也就是二级指针。

我没明白你的题意。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 07:54
九转星河
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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:10 
以下是引用九转星河在2017-5-22 02:33:56的发言:

假设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里面能找到相等结果的?~

结构指针p,结构成员 next 可用 p->next、(*p).next 表示,不是用 &p->next 表示。
2017-05-22 08:13
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
好吧,我错了一点。 第一语句和第四语句是相等的。
原因在于 ,虽然p = p->next 但是P本身的地址并不会因此而发生改变。

2  3 和 5  6 就不同了。

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


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 08:17
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 4楼 吹水佬
&p->next 是取 链表一个节点的 next 的地址
目的是用来修改这个地址。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 08:18
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用renkejun1942在2017-5-22 08:18:18的发言:

&p->next 是取 链表一个节点的 next 的地址
目的是用来修改这个地址。

明白,给第一句&p;//1搞糊涂了。
2017-05-22 08:20
九转星河
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
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 8楼 九转星河
p=p->next;然后再调&p的值和直接调用&p->next

当然有区别啊

&p 取P指针的地址。
&p->next 取p->next的地址

二级指针有点绕,但是只要明白指针也是一个变量,因此指针也有存储地址就清楚了。

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


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 08:27
九转星河
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
快速回复:关于指针地址~题目很水~却很容易出错~自己被这玩意坑了很久~
数据加载中...
 
   



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

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