c - 为什么 *ptr.member 错误而 (*ptr).member 正确?

标签 c pointers struct

我知道如果我在 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/

相关文章:

c - 在 VSCode 中使用 gcc 编译 C 程序时出错

c - 修改 fs/binfmt_elf.c 以获取自定义添加的部分内容

c - 取消引用指向结构的指针 - 使间接操作数无效?

c# - 不安全的指针操作

c - 如果使用结构体或指针作为 C 中 if 语句的参数,如何确定 true 或 false 结果?

c - Fscanf 未使用 execl 通过管道的输出从通过 fdopen 分配的流中读取任何值

c - 检查链表是否回文的问题

通过 system() 在 Cygwin 中创建多个线程并调用其他可执行文件?

c - 指针和地址引用之间的区别

python - 在 Python CFFI 中声明包含 time_t 字段的结构