C中结构解引用运算符的更复杂的表示法, - >?

时间:2014-04-07 17:06:58

标签: c operators structure dereference

我在这里有一个考试问题,问:

“C运算符 - >是更复杂表示法的简写。解释使用 - >或更复杂表示法的情况。写一个更复杂表示法的例子。”

我不确定考官在这里寻找什么。我的印象是,只有一种方法可以表示结构解除引用,即 - >。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

取消引用可以使用->(*).来完成。参见示例

struct point {
  int x;
  int y;
};
struct point my_point = { 3, 7 };
struct point *p = &my_point;  /* To declare and define p as a pointer of type struct point,
                                 and initialize it with the address of my_point. */

(*p).x = 8;                   /* To access the first member of the struct */
p->x = 8;    

很可能你的老师要求(*p).x = 8;

答案 1 :(得分:0)

->语法是(*).语法的简写,因此struct->member等同于(*struct).member

由于operator priority,括号是强制性的,基本上成员访问(.)运算符的优先级高于解除引用(*)运算符。

请记住,程序员很懒惰,而且常常像快捷方式一样。