我需要使用相同的默认值初始化一个结构数组。这是一个非常大的数组,因此在初始化程序中手动设置每个元素是不可行的。以下代码是否是正确且理智的方法,或者我是否需要依赖某些初始化函数和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作为单个字符。我用更有用的结构替换它。
答案 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);
id
和description
初始化为NULL
。
要设置s1_arr->id
和s1_arr->description
,您还需要一个* char变量
或只是文字字符串(char* a_string = "I am a String"; // This is a literal
)。
希望我帮助你。