gpt4 book ai didi

C - 调整指针数组的大小

转载 作者:行者123 更新时间:2023-12-04 16:19:50 26 4
gpt4 key购买 nike

我或多或少有一个想法,但我不确定我的想法是否正确,我希望我可能只是遗漏了一些明显的东西。基本上,我有一个字符串数组(C 字符串,所以基本上是一个指向字符数组的指针数组),如下所示:

char **words;

不知道最后要说多少字。当我解析字符串时,我希望能够调整数组的大小,添加指向单词的指针,然后移动到下一个单词然后重复。

我能想到的唯一方法可能是从一个合理的数字开始,并在每次到达数组末尾时重新分配,但我不完全确定是否可行。就像我希望能够访问 words[0]、words[1] 等。如果我有 char **words[10] 并调用

realloc(words, n+4)  //assuming this is correct since pointers are 4 bytes

一旦我到达数组的末尾,如果我做了 words[11] = new word,这是否有效?

最佳答案

跟踪数组大小:

size_t arr_size = 10;

并给它一个初始内存块:

char **words = malloc( arr_size * sizeof(char*) );

填满所有位置后,您可能希望将数组大小加倍:

size_t tailIdx = 0;

while( ... ) {
if( tailIdx >= arr_size ) {
char **newWords;
arr_size *= 2;
newWords = realloc(words, arr_size * sizeof(char*) );
if( newWords == NULL ) { some_error() };
words = newWords;
}
words[tailIdx++] = get_next_word();
}

...

free(words);

关于C - 调整指针数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14370445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com