从指针数组初始化字符串变量(在C中)

时间:2015-05-22 01:44:27

标签: arrays string copy global-variables initializer

我有类似的东西:

static const char *array[] = {
    "One String",
    "Second String",
    "Third",
    "etc",
};

我想定义一个新的字符串变量new_var,并使用数组中的第一个字符串对其进行初始化。所以数组[0]。如下所示:

static const char new_var[] = &array[0];

然而,编译器的错误是此行的初始化程序无效。

我试图在任何函数范围之外初始化变量,因此不希望使用任何string.h函数,如strcpy等。

请建议可能在此使用的任何技巧。

2 个答案:

答案 0 :(得分:0)

如果您发布实际错误会有所帮助,但是,您的类型是错误的,这可能是问题所在。相反,尝试:

static const char* new_var = array[0];

答案 1 :(得分:0)

您遇到类型错误。 &array[0]是指向char的指针。 new_var是一组字符。

如果要将new_var初始化为非文字字符串,则必须复制字符并附加终止0.但在此之前,您必须将new_var定义为足够大长度。

您可能需要不同的设计。例如,让new_var成为char的指针;然后你可以使用static const char *new_var = &array[0];。指针是分享一系列价值观的方式。