C:如何使用(。)点运算符编写(x - > x-> x)

时间:2011-10-29 20:45:15

标签: c pointers

关于结构和指针,如何使用点运算符编写此表达式x->x->x

使用箭头操作符:x->x->x我轻松访问第三个元素。使用点运算符:(*x).x如何使用点运算符访问第三个元素?

我知道箭头操作符是点运算符的快捷方式,因此应该可以使用点运算符到达第三个元素?我可以使用变量:

struct node *var
var = (*ptr).next
(*var).x = some value

这真让我烦恼。一直在寻找教科书和互联网上的任何地方,无法找到答案。

5 个答案:

答案 0 :(得分:7)

x -> x相当于(*x).x所以你只做了两次:

(*(*x).x).x

.比一元*更紧密,因此优先顺序有效。如果你感到偏执,你可以这样做:

(*((*x).x)).x

答案 1 :(得分:2)

考虑x->y相当于(*x).y,然后应用该规则两次:

x->x->x;
(*x).x->x;
(*(*x).x).x;

答案 2 :(得分:2)

从不想在现实生活中这样做,但是

(*p1).x

x;

指向的对象中的成员p1
(*((*p1).p2)).y

y指向的对象中的成员p2p1(*((*((*p1).p2)).p3).z 指向的对象中的成员,

z

p3指向的对象中的成员p2p1是{{1}}指向的对象中的成员,{{1}}是{{1}}指向的对象中的成员。 {1}}。

这完全有可能用较少的括号来完成,但它们肯定有助于理解。

答案 3 :(得分:1)

(*(*x).x).x

但为什么,为什么????

答案 4 :(得分:0)

嵌套解除引用...

(*(*x).x).x

让你在那里。至于你为什么要做这样的事情......丑陋,丑陋,丑陋。