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

C - how do I read * and -> together?

如果我有:

char *name; //this is in a struct

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

如何读取 *row->name 及其返回的内容?

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

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

一样
row->name[0]

恕我直言,这是一种更好的表达方式(虽然有时使用间接运算符 * 更清楚)。

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

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

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


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