使用指针访问结构

时间:2016-11-17 15:00:45

标签: c pointers structure

我已经声明了一个结构“node”,它有一个成员变量'm',然后定义了两个变量,如下所示

struct node t, *p;

在该计划的后期,我将t的地址指定为p

p = &t;

要访问成员变量,我需要使用p->m

但我想使用*运算符,但编写*p.m会出错。为什么会这样?

3 个答案:

答案 0 :(得分:9)

为此你必须看到运营商的优先权。

.运算符的优先级高于*运算符。

*p.m一样编写它会使编译器认为它是*(p.m)

您必须使用(*p).m

答案 1 :(得分:2)

这是因为operator precedence

表达式*p.memberVariable等于*(p.memberVariable)。即它尝试将p.memberVariable取消引用作为指针,而不是p。这将给你一个编译器错误,因为p是一个结构的指针,你可以使用点运算符来选择结构成员。

您需要明确告诉编译器使用括号p取消引用指针(*p).memberVariable

答案 2 :(得分:1)

由于运算符优先级,*p.memberVariable将无效。请(*p).memberVariablep->memberVariable