[英]Pointer arithmetic on pointer of pointer (*argv[])?
我知道foo[bar]
等于*(foo + bar)
,但是*foo[bar]
等于什么,比如访问*argv[2]
? 我有点困惑理解这一点,我假设可能像*(*(foo) + bar)
但我不确定..
如果这是一个简单的答案,我道歉。
*a[b]
由于C和C ++优先规则, *a[b]
相当于*(a[b])
。 所以*a[b]
相当于**(a+b)
如果以下是等效的,
foo[bar]
*(foo + bar)
那么以下也是等价的:
*foo[bar]
**(foo + bar)
这是我的理解,它是**(foo + bar)
为什么?
*foo[bar]
分解为*和foo[bar]
因为*是在foo[bar]
被取消引用后完成的。
你已经回答了foo[bar] == *(foo + bar)
现在添加另一个*,你有*(*(foo + bar))
这也简化为**(foo + bar)
*foo[bar]
是指针引用到foo[bar]
。
假设char *argv[]
的声明, argv[2]
引用argv
数组的第三个元素,它是一个char *
, *argv[2]
取消引用这个指针,为你提供该字符串中的第一个字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.