为C中的struct数组中的每个元素分配一个默认值

时间:2013-05-23 15:45:51

标签: c arrays initialization c-strings

我需要使用相同的默认值初始化一个结构数组。这是一个非常大的数组,因此在初始化程序中手动设置每个元素是不可行的。以下代码是否是正确且理智的方法,或者我是否需要依赖某些初始化函数和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作为单个字符。我用更有用的结构替换它。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:-1)

您似乎正在寻找memset功能。

答案 2 :(得分:-2)

初始化您的S1类型

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

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

iddescription初始化为NULL

要设置s1_arr->ids1_arr->description,您还需要一个* char变量

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

希望我帮助你。

相关问题