簡體   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