gpt4 book ai didi

c - 迭代地为 C 结构赋值

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:47 24 4
gpt4 key购买 nike

我有一个结构定义为

typedef struct{
char string1
char string2
int number1
char string3
}structure1

并希望在这样的循环中将值分配给 string1、string2、number1、string3

structure1 bob
for(int i = 0,i<=4,i++)
{
bob.i = assigned value
}

现在我明白上面的通用形式的代码只适用于整数,因为你不能只使用 string = string 进行赋值,但是同样的问题出现了,因为我不知道如何引用结构中的值没有具体地一一命名。对于字符串,将有第二个赋值依赖于 i 索引来计算它当时是整数还是字符串,以便它可以执行赋值。我在想一些类似枚举的东西,但我以前从未在实际意义上使用过它们,只是理论上的。

最佳答案

这在 C 中是不可能的。最接近的是计算字段偏移量,然后使用它们来赋值:

int fieldOffset[4];

structure1 base;

fieldOffset[0] = (char*)&base.string1 - (char*)&base;
fieldOffset[1] = (char*)&base.string2 - (char*)&base;
fieldOffset[2] = (char*)&base.number1 - (char*)&base;
fieldOffset[3] = (char*)&base.string3 - (char*)&base;

structure1 structYouWantToAssign;

for (int i = 0; i < 4; ++i)
{
*((char*)&structYouWantToAssign + fieldOffset[i]) = assignedValue;
}

警告:此代码只是为了演示可以在没有名称的情况下分配字段,但您不应该使用它!

关于c - 迭代地为 C 结构赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871015/

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