在一个操作中声明后在结构中填充数组的最简单方法[重复]

Posted

技术标签:

【中文标题】在一个操作中声明后在结构中填充数组的最简单方法[重复]【英文标题】:Simplest way to fill an array in a struct after declaration in one operation [duplicate] 【发布时间】:2014-06-23 16:28:33 【问题描述】:

我有一个包含长数组的结构。我知道定义时可能会初始化一个数组:

uint8_t array[] = 0x10, 0x11, 0xa2, 0xa5;

我的问题是:是否可以在一次操作中声明后设置数组的所有元素?其实这是一个结构的变量。

struct example

    uint8_t long_array[256];
;

创建实例后,我想在一次操作中将long_array 的所有元素设置为不同的值。如果不可能,设置所有元素的最简单方法是什么?

有一个伪代码我想做的:

struct example ex;
ex.long_array[] = 0x01, 0x07, 0x9a, 0xd1, <...>;

感谢您的帮助!

【问题讨论】:

你总是可以做 memcpy。 @HotLicks 你不是说memset吗? 为什么会有赞成票?该问题根本没有任何研究工作,可以通过搜索轻松找到答案 @luk32 - 取决于初始化值。如果您需要将 100 个数组初始化为相同的序列,则可以使用原型中的 memcpy。 “可能重复”并没有解释如何初始化现有数组,而是如何一步声明和初始化数组。 OP 的问题特别询问“是否可以在一个操作中设置数组 after 声明的所有元素?” 【参考方案1】:
struct Mystruct 
  int a[5];
;

int main() 

  struct Mystruct foo = 
         1, 2, 3, 4 
  ;
  return 0;

当然你可以有更多的数组。

[编辑]

关于 memcpy,在 cmets 中提到,当然这是一个可行的解决方案,但是,您需要将值保存在另一个数组中,以便您实际上将这个数组复制到结构内的那个。

【讨论】:

@titapo,不客气。但是,我相信谷歌可以对你的问题有一些答案。为了避免对您的问题投反对票,请下次更好地搜索然后发布。 :) 我从谷歌开始,但我没有找到信息。最初我想知道如何重新定义现有数组的值(不仅仅是初始化)不幸的是我的英语不是很好。您的答案是我实际问题的解决方案,但我的问题的真正答案是 memcpy (有内存开销)我很想知道是否有可能在没有开销的情况下做到这一点,但我认为最好不要继续讨论。谢谢@G.Samaras

以上是关于在一个操作中声明后在结构中填充数组的最简单方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

创建零填充 JavaScript 数组的最有效方法是啥?

安装我的 conda 包后在标准输出上显示自定义消息的最简单方法

在 Flutter 中使用设置的 FPS 绘制大量简单、填充颜色的矩形的最高效方法是啥?

将hdf5文件中的uint32数据写入java中的数组的最简单方法是啥?

前向填充位数组的最有效方法

C#:从列表中填充列表框的最简单方法