PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 双重指标的使用
楼主:
ToastCheng
(ToastCheng哥)
2017-06-13 23:08:04
开发平台(Platform): (Ex: Win10, Linux, ...)
Win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
DevC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
各位大大好
我想请问使用双重指标时
若pp为双重指标,p为一般指标
使用
1. *pp = p
2. pp = &p
这两个有什么不一样吗
按照我的理解
1.是将p这个指标的值指派给pp所指向的指标,
2.是将p的位址指派给pp这个双重指标
结果好像都是让pp指向p
喂入的资料(Input):
我在Leetcode(#24)的讨论看到有些人这样使用(6、7行),而我交换两种写法结果不
一样让我一直想不通
ListNode* swapPairs(ListNode* head) {
ListNode **pp = &head, *a, *b;
while ((a = *pp) && (b = a->next)) {
a->next = b->next;
b->next = a;
*pp = b;
pp = &(a->next);
}
return head;
}
还请各位前辈指点,感谢!
作者:
shadow0326
(非议)
2017-06-13 23:15:00
先不用想到双重指标这么复杂,就用int i和int* p来想*p=i 和 p=&i 有一样吗? 想通你就知道哪里不同了
作者:
outofyou
2017-06-13 23:34:00
pp = &p时, pp= 不会修改p的值,*pp= 会修改p的值。这里用pointer of pointer就是要处理用一个变量代替另一个变量的问题,就像是函式call by value的议题,所以要用传址的方式处理,这里也是,例如串行有a,b,c,d这4个节点,如果p = a->next,想要修改a->next的值是无法透过p处理的,但是pp = &(a->next)的话,要修改a->next就可以用*pp= 的方式来处理。
作者:
moebear
(萌熊)
2017-06-14 01:31:00
PP是你家地址 里面住着你 p是隔壁邻居 1是把隔壁邻居复制拿来取代你 2是你家的地址变成隔壁家地址 再也找不到你家
楼主: ToastCheng (ToastCheng哥)
2017-06-14 07:53:00
感谢楼上各位解释~我看懂差别了^_^
" target="_blank" rel="nofollow">
我卡的点在于认为不论1还2最后都会指向P所指向的值,但忽略上一层的不同
作者: XtendaceD (X招待王牌D)
2017-06-17 01:50:00
http://www.books.com.tw/products/0010740454
作者:
Killercat
(杀人猫™)
2017-06-22 12:18:00
这种写法太C了 XD
继续阅读
[问题] OPENCV开启影片档
yykkl
Re: [问题] api是什么?
CoNsTaR
Re: [问题] api是什么?
s25g5d4
[问题] 使用c++/clr做为c#与c++的桥梁 (已解决)
s4300026
Re: [问题] api是什么?
Hazukashiine
Re: [问题] api是什么?
AWEN221
Re: [问题] template ostream
LPH66
[问题] template ostream
moebear
[问题] 把四个字符打包成一个unsigned int
faradair
[问题] 宣告时使用"&"
ThomasHuang
Links
booklink
Contact Us: admin [ a t ] ucptt.com