gpt4 book ai didi

c - 指针的问题 - C

转载 作者:行者123 更新时间:2023-11-30 21:00:25 24 4
gpt4 key购买 nike

我的指针有问题。在程序中,我将所有单词放入数组 foldersName[] 中。当我打印它们时,数组中的所有单词都可以,但我想返回指针数组,对于数组中的每个单词一个指针。我的方法是:

char** getTokens(char * path){
.
.//Getting tokens in array foldersName[];
.char foldersName[count][255];
.
char * tokens[actualCountOfFolders]; //How much folders in foldersName
int i;
for(i=0;i<count;i++){
tokens[i] = foldersName[i];
printf("Folders pointer %s \n",tokens[i]);
}
return tokens;

例如,我有 foldersName = {"C","Game","Halo 4","Map"}。但是如果我printf tokens[i],就像我在for循环中所做的那样,它会打印这个{"C","Game","Halo 4", “ map ?”}。如何修复它?

在调用函数后,我可以在下一个代码中执行此操作吗?

char ** tokens =(char **) malloc(sizeof(char)*actualCountOfFolders);
tokens = getTokens(path);
int i = 0;
for(i =0;i<actualCountOfFolders;i++){
printf("Folders %s \n",tokens[i]);
}

最佳答案

问题是您返回了一个指向局部变量的指针。当函数 getTokens 返回时,它的所有变量都会超出范围并且不再存在。这也适用于数组tokens

在调用之前分配内存并不重要,因为您用 getTokens 返回的指针覆盖(重新分配)由 malloc 返回的指针,从而导致内存泄漏。哦,那个 malloc 无论如何都不会分配正确的数量,因为它只分配 actualCountOfFolders 字节(字符),而不是 actualCountOfFolders指向字符的指针。

两种典型的解决方案是在 getTokens 函数内动态分配,或者将数组作为参数传递给函数。

关于c - 指针的问题 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41506573/

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