繁体   English   中英

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

[英]C: How can i write ( x -> x- > x ) using (.) dot operator

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

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

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

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

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

好吧x -> x等于(*x).x所以你只需两次:

(*(*x).x).x

. 一元*绑定更紧密,因此优先级起作用。 如果您感到偏执,可以这样做:

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

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

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

永远都不想在现实生活中这样做,但是

(*p1).x

p1指向的对象中的成员x

(*((*p1).p2)).y

是构件y在对象通过指向p2这是在对象中的构件通过指向p1 ,并

(*((*((*p1).p2)).p3).z

p3指向的对象中的成员zzp2指向的对象中的成员, p2p1指向的对象中的成员。

完全有可能用较少的括号来完成此操作,但是它们无疑有助于理解。

(*(*x).x).x

但是为什么,为什么呢???

嵌套解引用

(*(*x).x).x

认为那能使您到达那里。 至于为什么你想做这样的事情……丑陋,丑陋,丑陋。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM