c - 在C中初始化混合结构

标签 c

我有一个 C 结构,说

typedef struct __X {
    char AA[10];
    int A;
    char BB[10];
    int B;
    ..
    ..
    ..
    char ZZ[10];
    int Z;
} _X;

如何用最少的代码初始化一个结构,前提是 int 应该用 0 初始化,char 用 ' ' 空格初始化。

我知道的一个解决方案是:

memset(_X,0,sizeof(_X));

然后分别将 AA, BB, CC ... ZZ 设置为 ' ',但这是一个漫长的过程,并且需要进行大量的代码更改。

有没有更简单的方法?

最佳答案

实现这一点的最简单方法是编写初始化函数:

void initialize(_X *x)
{
  memset(x, 0, sizeof(_X));

 x->AA[0] = ' ';
 x->BB[0] = ' ';
 // etc
 // etc
 x->ZZ[0] = ' ';
}

你不会得到比这更多的东西。

编辑:如果您希望用空格完全填充字符数组,那么您需要memset它们,而不是将第一个字符设置为空格。

关于c - 在C中初始化混合结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39334465/

相关文章:

c - 使用右移和左移运算符时的优先级

c - C 中的字符串数组段错误

c - 在 Gtk 中重绘小部件

c - 如何在运行时检查指针变量是否是垃圾?

c - add = (char *) wed.. 这在 C 中是什么意思?

C: Eclipse/gdb 和空终止字符串

c - 下面的数组初始化方法与数组边界检查的上下文有何不同?

c - 什么是 LD_PRELOAD 技巧?

c - 我如何找到 "parallel for"的实现?

c - 指针与整数的逻辑与