0

我需要用相同的默认值初始化一个结构数组。这是一个非常大的数组,因此在初始化程序中手动设置每个元素是不可行的。下面的代码是正确和理智的方法吗,还是我需要依赖一些初始化函数和 for 循环?

#define SIZE_OF_S1_ARR 10000 //just some arbitrary size for an example

typedef struct { char* id, char* description} S1;

/*
 * Array of structs, with each element having an id and a description 
 * which is an empty c-string
/*/
S1 s1_arr[SIZE_OF_S1_ARR] = {{ "", "" }};

我要补充一点,这个数组已经作为一个 char 数组存在,它只包含 id 作为单个字符。我用更有用的结构替换它。

4

3 回答 3

1

在标准 C 中,除了 0 之外没有数组初始化,除非您分别指定每个值。

但是,如果您使用 GNU C 编译器,则可以使用如下内容:

char s1_arr[SIZE_OF_S1_ARR] = {[0 ... SIZE_OF_S1_ARR-1] = '_' };

请注意,这种方法不可移植。此外,请注意初始化字符串(即指向 char 的指针)以具有相同的值可以通过两种方式完成:(可能自动)分配多个字符串并分配它们分配一个字符串并将其分配给所有元素

于 2014-06-09T14:38:27.883 回答
-1

看来您正在寻找memset功能。

于 2013-05-23T15:47:02.097 回答
-2

初始化您的 S1 类型

#define ARBITER 10000 // just an example number for elements

S1 *s1_arr = (S1*)malloc(sizeof(S1)*ARBITER);

iddescription用 初始化NULL

要设置s1_arr->id并且s1_arr->description您还需要一个 *char 变量

或者只是一个文字字符串 ( char* a_string = "I am a String"; // This is a literal)。

希望我能帮助你。

于 2013-05-23T16:00:31.617 回答