Simplest way to fill an array in a struct after declaration in one operation
我有一个包含长数组的结构。我知道,在定义数组时,可以初始化该数组:
1
| uint8_t array[] = {0x10, 0x11, 0xa2, 0xa5}; |
我的问题是:是否可以在一个操作中声明后设置数组的所有元素?实际上,这是一个结构的变量。
1 2 3 4
| struct example
{
uint8_t long_array[256];
}; |
号
在创建实例之后,我想在一个操作中将long_array的所有元素设置为不同的值。如果不可能,设置所有元素的最简单方法是什么?
我要做的是一个伪代码:
1 2
| struct example ex;
ex.long_array[] = {0x01, 0x07, 0x9a, 0xd1, <...>}; |
谢谢你的帮助!
- 你总是可以做memcpy。
- @你的意思是"记忆集"吗?
- 为什么要投赞成票?这个问题根本没有研究成果,通过搜索很容易找到答案。
- @Timcasteligns是的,我以为memset在那里不见了,但有人提到要排除它。不过,不需要花太多时间来了解它是如何工作的。
- @提塔波,这在你的问题中没有表现出来。您想将其设置为什么?老实说,现在还不清楚你在要求什么。
- @提塔波你的问题从来没有提到你想要重置你的数组元素
- 问题已更新。
- @luk32-取决于初始值是什么。如果你需要将100个数组初始化成相同的序列,你可以从一个原型中使用memcpy。
- "可能的重复"并不解释如何初始化现有数组,而是解释如何在一个步骤中声明和初始化数组。OP的问题专门问"是否可以在一个操作中声明后设置数组的所有元素?"
1 2 3 4 5 6 7 8 9 10 11
| struct Mystruct {
int a[5];
};
int main() {
struct Mystruct foo = {
{ 1, 2, 3, 4 }
};
return 0;
} |
当然,你可以有更多的数组。
[编辑]
关于memcpy,也就是在注释中提到的,当然这是一个有效的解决方案,但是,您需要在另一个数组中有值,这样您就可以将这个数组实际复制到结构中的那个数组。
- 谢谢你的回答。
- @titapo,欢迎你。不过,我相信谷歌会回答你的问题。为了避免下载你的问题,在下一个时间和之后的邮件。注:
- 我开始在谷歌,但我找到了一些信息。原来我想知道如何重新计算一个现有阵列的价值(不只是初始化),我的英语不是很好。你的答案是解决我的实际问题的一个办法,但对我的问题的真正答案是记忆(记忆过于沉重),我是一个有可能做到这一点的人,但我认为这是最好的,不要继续这一讨论。thank [email protected]