->
和.
在结构中调用变量时有什么区别?我已经看到它们在各种场景中都有用,但无法识别它们之间的区别。
答案 0 :(得分:2)
->
表示您有一个指向包含结构的内存的变量。要访问其成员,必须取消引用指针,然后将偏移量添加到成员。 ->
为你做了这件事。
.
表示您的变量 结构,您只需要向成员添加偏移量。
正如用户Eliot B指出的那样,如果你有一个结构s
指针,那么访问成员elem
可以通过两种方式完成:s->elem
或{{1} }。
使用(*s).elem
,您有一个“是”结构的表达式,现在您使用点运算符来访问(*s)
。
答案 1 :(得分:1)
s->elem
等于(*s).elem
答案 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
的结构的指针时使用它。