从指针数组初始化字符串变量(在 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];。指针是共享值数组的方式。