gpt4 book ai didi

c - 在 C 中引用结构成员的不同方式

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:49 25 4
gpt4 key购买 nike

我使用了三种不同的方法,我认为它们是等效的,从另一个函数为结构的成员赋值。我得到的结果是 b c 在以下结构中是正确的,但不是 a 的结构 。这些改变结构成员值的方法不等价吗?

   #include<stdio.h>
typedef struct
{
int a,b,c;
}
test_str;
void change(test_str * my_str_ad);

int main()
{
test_str my_str;
change(&my_str);
printf("a: %d, b:%d, c: %d\n", my_str.a, my_str.b, my_str.c);
return 0;
}

void change(test_str * my_str_ad)
{
test_str my_str;
my_str = *my_str_ad;
my_str.a = 5;
(*my_str_ad).b = 6;
my_str_ad->c = 7;
}

最佳答案

main() 中的 my_str 与 change() 中的 my_str 不同。

当你跳转到 change() 语句 test_str my_str;创建一个新的 test_str 实例。因此 main 中 my_str 的成员 'a' 不会受到 change() 的影响。

(*my_str_ad).b = 6;my_str_ad->c = 7;将起作用,因为您正在使用传递给 change() 的指针修改 main() 的 test_str。

关于c - 在 C 中引用结构成员的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17357503/

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