调用结构变量的差异

时间:2016-12-02 13:39:13

标签: c

->.在结构中调用变量时有什么区别?我已经看到它们在各种场景中都有用,但无法识别它们之间的区别。

4 个答案:

答案 0 :(得分:2)

  • ->表示您有一个指向包含结构的内存的变量。要访问其成员,必须取消引用指针,然后将偏移量添加到成员。 ->为你做了这件事。

  • .表示您的变量 结构,您只需要向成员添加偏移量。

正如用户Eliot B指出的那样,如果你有一个结构s指针,那么访问成员elem可以通过两种方式完成:s->elem或{{1} }。

使用(*s).elem,您有一个“是”结构的表达式,现在您使用点运算符来访问(*s)

答案 1 :(得分:1)

答案 2 :(得分:1)

区别在于结构的定义实例。 ' - >'和'。'运算符总是左边的操作数。

如果左操作数是指针,则使用' - >',否则使用'。'。

例如。

struct Foo bar1;
struct Foo* bar2 = malloc(sizeof(struct Foo));
bar1.variable = "text";
bar2->variable = "text"; 

答案 3 :(得分:1)

x->y->是指向成员运算符的指针)等同于(*x).y。由于运算符优先级,您无法编写*x.y,因为它将被评估为*(x.y)

前者更容易打字,而且更清晰。当x是指向包含成员y的结构的指针时使用它。