我知道如果我在 C 编程语言中有一个指针,并且我必须指向一个结构,我会这样做:
struct mystruct S;
struct mystruct *ptr;
ptr=&S;
ptr->member=5;
我明白这一点,但我不明白为什么,如果我这样做:
ptr=&S;
(*ptr).member=5;
*ptr
应该指向结构的首地址,但为什么我这样做不起作用:
*ptr.member=5;
最佳答案
运算符有precedence : 成员访问运算符 .
具有最高优先级,而取消引用 *
具有次高优先级。所以 *p.member
试图找到指向 mystruct
的指针的成员 member
然后取消引用它。因为 *mystruct
没有名为 member
的成员,所以这是一个错误。
关于c - 为什么 *ptr.member 错误而 (*ptr).member 正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40686387/