从指针数组初始化字符串变量(在 C 中)
Initialising string variable from a pointer array (in C)
我有类似的东西:
static const char *array[] = {
"One String",
"Second String",
"Third",
"etc",
};
我想定义一个新的字符串变量 new_var 并用数组中的第一个字符串初始化它。所以数组[0]。所以像:
static const char new_var[] = &array[0];
然而,编译器的错误是这一行的初始值设定项无效。
我正在尝试在任何函数范围之外初始化变量,因此不想使用任何 string.h 函数,如 strcpy 等
请提出任何可能在此处使用的技巧。
如果您发布实际错误会有所帮助,但是,您的类型有误,所以这可能就是问题所在。相反,尝试:
static const char* new_var = array[0];
您输入错误。
&array[0]
是一个指向字符的指针。
new_var
是一个字符数组。
如果要将 new_var
初始化为非文字字符串,则必须复制字符并附加终止符 0。但在此之前,您必须将 new_var
定义为足够大的长度。
您可能需要不同的设计。例如,让 new_var 成为指向 char 的指针;那么你可以使用 static const char *new_var = &array[0];
。指针是共享值数组的方式。
我有类似的东西:
static const char *array[] = {
"One String",
"Second String",
"Third",
"etc",
};
我想定义一个新的字符串变量 new_var 并用数组中的第一个字符串初始化它。所以数组[0]。所以像:
static const char new_var[] = &array[0];
然而,编译器的错误是这一行的初始值设定项无效。
我正在尝试在任何函数范围之外初始化变量,因此不想使用任何 string.h 函数,如 strcpy 等
请提出任何可能在此处使用的技巧。
如果您发布实际错误会有所帮助,但是,您的类型有误,所以这可能就是问题所在。相反,尝试:
static const char* new_var = array[0];
您输入错误。
&array[0]
是一个指向字符的指针。
new_var
是一个字符数组。
如果要将 new_var
初始化为非文字字符串,则必须复制字符并附加终止符 0。但在此之前,您必须将 new_var
定义为足够大的长度。
您可能需要不同的设计。例如,让 new_var 成为指向 char 的指针;那么你可以使用 static const char *new_var = &array[0];
。指针是共享值数组的方式。