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

发布于 2024-12-12 19:11:33 字数 341 浏览 0 评论 0原文

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

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

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

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

这真的让我很恼火。一直在教科书和互联网上到处寻找,但找不到答案。

Regarding structs and pointers, how can I write this expression x->x->x using the dot operator?

Using arrow operator: x->x->x I easily acces third element. Using dot operator : (*x).x How can I acces the third element using the dot operator?

I know arrow operator is a shortcut for the dot operator, so it should be possible to reach third element using dot operator? I could use a variable:

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

It really annoys me. Have been looking in text book and everywhere on internet and can't find an answer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一个人练习一个人 2024-12-19 19:11:33

那么x -> x 相当于 (*x).x 因此,您只需执行两次:

(*(*x).x).x

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

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

Well x -> x is equivalent to (*x).x So you just do that twice:

(*(*x).x).x

. binds tighter that unary * so the precedence works. If you were feeling paranoid you could do:

(*((*x).x)).x
享受孤独 2024-12-19 19:11:33

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

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

Considering that x->y is equivalent to (*x).y, then applying that rule twice:

x->x->x;
(*x).x->x;
(*(*x).x).x;
叹倦 2024-12-19 19:11:33

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

(*p1).x

p1指向的对象中的成员x

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

p2指向的对象中的成员y,它是p1指向的对象中的成员,并且

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

是成员p3 指向的对象中的 >zp2 指向的对象中的成员,p2 是p1

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

You would never want to do this in real life, but

(*p1).x

is the member x in the object pointed to by p1;

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

is the member y in the object pointed to by p2 which is a member in the object pointed to by p1, and

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

is the member z in the object pointed to by p3, which is a member in the object pointed to by p2, which is a member in the object pointed to by p1.

It's entirely possible that this could be done with fewer parentheses, but they definitely help with understanding.

溺深海 2024-12-19 19:11:33
(*(*x).x).x

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

(*(*x).x).x

But why, oh why????

尘世孤行 2024-12-19 19:11:33

嵌套解引用...

(*(*x).x).x

我认为这可以帮助您实现目标。至于你为什么要做这样的事……丑陋、丑陋、丑陋。

Nested dereferencing ...

(*(*x).x).x

I Think that gets you there. As to why you'd want to do such a thing ... ugly, ugly, ugly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文