【发布时间】:2020-08-15 22:14:18
【问题描述】:
有没有办法在 for 循环中更新结构成员,我想避免一个一个地更新成员。例如:
不要这样做:
void Update(int vaule,struct Coolstruct *Ice)
{
int vaule;
Ice->member1=vaule;
Ice->member2=vaule;
Ice->member3=vaule;
Ice->member4=vaule;
}
我想知道类似的东西(伪代码)是否可能:
void Update(int vaule,struct Coolstruct *Ice)
{
int vaule;
for(int i=0;i++;i<4)
{
Ice->i =vaule
}
}
【问题讨论】:
-
这就是数组的用途。
-
你可以修改你的结构定义,用一个数组来替换分隔的member,但是初始化不能是修改它的唯一原因,这一定是有意义的。警告,在 Update 中,您通过具有相同名称且未初始化的变量来屏蔽参数 vaule,行为未定义
-
struct Coolstruct { int member[4]; }; -
这
for(int i=0;i++;i<4)不符合您的预期。 -
(a) 不要这样做。别再尝试了。 C 没有为此提供适当工具的原因是它不是必需的,并且有更好的方法来实现您的实际目标。 (b) 如果要将成员作为数组访问,则应将它们定义为数组。单独访问数组的元素(例如
Ice->member[3])比访问结构成员作为数组更容易。 (c) 可以使用offsetof和提供结构内成员映射的辅助数组来实现适当的(严格符合 C)解决方案。不要这样做;这是一种浪费。