如何将变量放在const char *数组中并使size成为变量

时间:2015-07-15 21:31:15

标签: c arrays char const

我有这个数组是正确的,但我需要值和大小是可变的。这可能吗?如果是这样,怎么样?

const char *labels[] = { "Group A", "Group B", "Group C", "Group D", "Group E", "Group F", "Group G", "Group H" };

它必须是一个const char *数组,因为它被用作stringArray参数,它不会带来任何不太复杂的东西。

任何帮助将不胜感激。请记住,我是一名学生开发人员。

2 个答案:

答案 0 :(得分:1)

  

它必须是一个const char *数组,因为它被用作一个   stringArray参数,不会带来任何复杂的东西。

您可以将char*传递给期待const char*的函数。

鉴于此,也许你可以尝试这样的事情:

char**arr = malloc(ARRAY_LEN * sizeof(char*));
for (i=0; i<ARRAY_LEN; i++)
{
     arr[i] = malloc(EACH_STRING_LEN);
     if(arr[i]==NULL) 
        handleError();
     strcpy(arr[i],"test"); // put some string in i-th array
}

并释放部分:

for (i = 0; i < ARRAY_LEN; i++) {
  free(arr[i]);
}
free(arr);

答案 1 :(得分:0)

c数组没有可变大小。如果您需要此功能,则必须使用不同的数据结构

你的意思是“它被用作一个stringArray参数,它不会带来任何不那么复杂的东西。”?