动态字符串数组 - C.

时间:2011-04-25 11:54:14

标签: c++ c

我有一个像这样定义的字符串数组:

char** arrNames;

现在我想动态地为它分配一个大小。 我有一个接收新大小和上面数组的函数。 它是这样的:

char** AddName(char** arrNames, int nNameCount)
{
    char** arrTemp;

    arrTemp = new char[nNameCount];
    ...
    // And later I change the pointer of arrNames to arrTemp
}

现在这显然不起作用。那么我该怎么做呢?

提前致谢。

4 个答案:

答案 0 :(得分:5)

如果你想要nNameCount字符串,你需要分配一个chars数组数组(即一个字符串数组):

char** AddName(char** arrNames, int nNameCount)
{
    char** arrTemp = new char *[nNameCount];

    for (int i = 0; i < nNameCount; ++i) arrTemp[i] = new char[STRING_SIZE];
    ...
}

在此之后,您可以使用arrTemp [index]访问每个字符串。请注意,您仍需要初始化每个字符串。

答案 1 :(得分:0)

以下是如何初始化动态字符串动态数组的工作示例。

twoDStr = new char*[10];
twoDStr[0] = new char[10];

cin>>twoDStr[0];
cout<<twoDStr[0]<<endl;

答案 2 :(得分:0)

在C中,动态分配内存的函数有malloc()calloc()realloc()free()

man malloc应该会为您提供更多信息。

答案 3 :(得分:0)

  

//后来我将arrNames的指针更改为arrTemp

为了使其正常工作,你需要arrNames作为指向数组的指针。

char** AddName(char*** arrNames, int nNameCount) {
    //...
    *arrNames = arrTemp;
}

不要忘记释放以前分配的内存arrNames可能引用的内容!