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--)
- 组件选择运算符 `.` 和 `->` 与后缀运算符组合在一起,即使它们看起来像中缀运算符。
如果我有:
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--)
- 组件选择运算符 `.` 和 `->` 与后缀运算符组合在一起,即使它们看起来像中缀运算符。