繁体   English   中英

动态字符串数组-C

[英]Dynamic array of strings - 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
}

现在,这显然行不通。 那我该怎么办呢?

提前致谢。

如果要使用nNameCount字符串,则需要分配一个字符数组(即字符串数组)数组:

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]访问每个字符串。 请注意,您仍然需要初始化每个字符串。

这是一个有关如何初始化动态字符串的动态数组的工作示例。

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

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

在C语言中,用于动态分配内存的函数是malloc()calloc()realloc()free()

man malloc应该给您更多信息。

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

为了使它正常工作,您需要arrNames作为数组的指针。

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

不要忘记释放任何先前分配的内存arrName可能会引用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM