【发布时间】:2020-02-05 00:28:01
【问题描述】:
给定:
typedef struct Person_struct { char name[10]; int age; } Person;
Person bob;
void makePerson(Person *human) {
strcpy((*human).name, "Bob Bee");
(*human).age = 36;
}
然后取消引用采用一般形式:
(*variable).member //variable could be bob, member could be age
我知道成员访问运算符. 优先于*,所以我们首先使用括号取消引用变量。我真的不明白为什么这是必要的。
*variable.member 首先对成员访问运算符进行操作以获取指向 struct_type 的指针,然后 .member 将添加 sizeof(member) 以获取要引用的位置,这实际上似乎更直观。
但是(*variable).member 的正确形式非常不直观。目前尚不清楚(*variable) 实际返回的“值”是什么,也不清楚如何从返回的内容中访问该成员。
我的问题是:
当使用(*variable).member 而不是*variable.member 时,内存中发生了什么?
我看到了this,但它没有回答我的问题。
【问题讨论】:
-
你为什么不用
->?