指针指针的算术运算(* argv [])?

时间:2010-11-25 17:29:39

标签: c pointers math

我知道foo[bar]等于*(foo + bar),但*foo[bar]等于什么,例如访问*argv[2]?我对理解这一点感到有些困惑,我假设可能像*(*(foo) + bar)但不确定......

如果这是一个简单的答案,我道歉。

5 个答案:

答案 0 :(得分:5)

由于C和C ++优先级规则,

*a[b]相当于*(a[b])。所以 *a[b]相当于**(a+b)

答案 1 :(得分:3)

如果以下内容相同,

foo[bar]
*(foo + bar)

以下也是等同的:

*foo[bar]
**(foo + bar)

答案 2 :(得分:2)

我的理解是**(foo + bar)

为什么呢?

*foo[bar]分解为*和foo[bar],因为*在foo[bar]被取消引用后完成。

您已经回答了foo[bar] == *(foo + bar)

的内容

现在添加另一个*,你有*(*(foo + bar))

这也简化为**(foo + bar)

答案 3 :(得分:0)

*foo[bar]是指向foo[bar]的指针。

答案 4 :(得分:0)

假设声明char *argv[]argv[2]引用argv数组的第三个元素,即char **argv[2]取消引用此指针,给你那个字符串中的第一个字符。