C - 我如何阅读*和 - >一起?

时间:2016-05-18 16:44:22

标签: c pointers operators dereference

如果我有:

char *name; //this is in a struct

*row->name //row is able to get in the struct

如何阅读* row->名称及其返回的内容?

我会链接我正在阅读的代码:http://pastebin.com/MvLXkDCz

2 个答案:

答案 0 :(得分:3)

首先评估->运算符,然后指向name指向的结果指针被*取消引用。所以和

一样
row->name[0]

和恕我直言这是表达相同的更好的方法(有时使用间接操作符*更清楚)。

答案 1 :(得分:0)

->组件选择运算符的优先级高于一元*运算符,因此*row->name被解析为*(row->name);您正在取消引用row->name成员。

所有其他postfix 1 运算符也是如此:

*arr[i] == *(arr[i])
*foo()  == *(foo())
*a.p    == *(a.p)
*p++    == *(p++)
*q--    == *(q--)

<小时/>

  1. 组件选择运算符`.`和` - &gt;`与后缀运算符组合在一起,即使它们看起来像中缀运算符。