gpt4 book ai didi

c - 使用 (*variable).member 与 *variable.member 取消引用 struct Struct_type 的成员

转载 作者:行者123 更新时间:2023-11-30 19:25:51 25 4
gpt4 key购买 nike

给定:

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但它没有回答我的问题。

最佳答案

不能使用*variable.member的原因是因为本例中的变量是指针,而不是结构,并且不能在指针上使用成员访问运算符。我们有一个单独的运算符 -> 用于对取消引用的指针进行成员访问:

strcpy(human->name, "Bob Bee");

关于c - 使用 (*variable).member 与 *variable.member 取消引用 struct Struct_type 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58274132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com