初始化struct数组成员的最有效方法?

Y Kal:

我已经声明了结构

struct wnode {
  char *word;
  int lines[MAXLINES];
  struct wnode *left;
  struct wnode *right;
};

和指针

struct wnode *p;

指针被传递给函数。在该函数中,我首先使用malloc为指针分配内存。然后我想 该struct成员初始化 线 零出结构体成员

数组初始化方法将不起作用,因为它被解释为赋值:

p->lines[MAXLINES] = {0};

编译器将引发错误:

错误:“ {”令牌之前的预期表达式

最后,我只是使用for循环将lines数组清零

for (i = 0; i < MAXLINES; i++)
  p->lines[i] = 0;

有没有更好的办法?

dbush:

数组不能直接分配给。您需要使用循环将所有字段设置为0,也可以使用memset

memset(p->lines, 0, sizeof(p->lines));

请注意,对于非字符类型,只能将所有成员设置为0。对于其他任何值,都需要循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么灵活数组成员的静态初始化有效?

为什么使用灵活的数组成员进行的结构初始化无效但对于固定大小的数组成员却有效?

C ++中的struct char数组成员初始化

初始化固定的C数组成员结构

弹性数组成员的非静态初始化?

灵活数组成员的静态初始化

数组成员的初始化程序无效

如何初始化具有 unint_t 作为灵活数组成员的结构?

PHP:初始化大量多维数组的最有效方法?

初始化列表中的零初始化数组成员

使用std :: index_sequence初始化具有固定大小数组成员的POD结构容器

在编译时初始化灵活的数组成员

如何通过引用初始化函数内部的结构数组成员

数组成员可以自引用初始化吗?

删除类的复制构造函数时,初始化类的数组成员

将初始化列表传递给C ++中的数组成员

为什么在构造函数初始化程序中初始化 const char 数组成员不兼容?

为什么需要在constexpr类中成员初始化非静态数组成员?

通过基类构造函数从驱动类模板值初始化基类数组成员变量

在类模板中使用条件运算符初始化静态constexpr char数组成员

继承:构造函数,在C ++ 11中初始化C之类的基类的数组成员

用字节序列初始化数组的有效方法?

C ++-初始化结构的有效方法

初始化Clojure中大向量的有效方法

在可变参数模板类的构造函数中初始化元组成员

从数组删除的最有效方法?

使用指定的初始化器范围初始化C中struct数组的所有struct成员

当将值分配给结构初始化程序中的字符串数组成员时,为什么会收到“ int-conversion”警告?

成员初始化列表真的更有效吗?