gpt4 book ai didi

c - 将不同的结构成员设置为彼此相等

转载 作者:行者123 更新时间:2023-11-30 17:03:04 24 4
gpt4 key购买 nike

假设我有两个不同类型的结构例如:

 typedef struct struct_A
{
int member_A1
char member_A2
}STRUCT_A;

typedef struct struct_B
{
int member_B1
char member_B2
}STRUCT_B;

然后它们被初始化如下

 void struct_A_init(STRUCT_A *struct_A_pointer)
{
int i;
for(i=0; i<=10; i++)
{
struct_A_pointer[i].member_A1;
struct_A_pointer[i].member_A2;
}

}

void struct_B_init(STRUCT_B *struct_B_pointer)
{
int i;
for(i=0; i<=10; i++)
{
struct_B_pointer[i].member_B1;
struct_B_pointer[i].member_B2;
}

}

然后全局定义并按如下方式使用

   STRUCT_A struct_A_pointer[10];
STRUCT_B struct_b_pointer[10];

some_function(types, types, types)
{
struct_A_pointer[0].member_A1 = struct_B_pointer[7].member_B1;
}

如果成员属于同一类型,为什么这不起作用?目前我有相同的设置,并将值加载到 struct_B_pointer[7].memberB1 中,当我将其设置为等于 struct_A_pointer[0].member_A1 时,它只收到值 0。而不是 struct_B_pointer 中实际的值,并且我不知道如果成员属于同一类型,为什么会发生这种情况。此外,我还尝试创建一个虚拟变量并尝试以下操作

  dummy_Var = struct_B_pointer[7].member_B1;

struct_A_pointer[0].member_A1 = dummy_Var;

但我收到了相同的结果,有点想我可以用这个来欺骗他们的系统:p

非常感谢任何建议或意见

谢谢

最佳答案

这个

 for(i=0; i<=10; i++)
{
struct_B_pointer[i].member_B1;
struct_B_pointer[i].member_B2;
}

不初始化任何东西。事实上,整个循环是一个 NOOP,最终很可能通过访问第 11 个元素(数组后面的一个元素)来引发未定义的行为。

您只想循环 10 个元素并为成员分配一些内容

 for(i=0; i<10; i++)
{
struct_B_pointer[i].member_B1 = 42;
struct_B_pointer[i].member_B2 = 43;
}

此外,您根本不需要显式初始化数组(为零),因为编译器会为您执行此操作,因为它们是全局定义的。

关于c - 将不同的结构成员设置为彼此相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289056/

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