gpt4 book ai didi

c - 我在最终返回时没有得到正确的返回值

转载 作者:行者123 更新时间:2023-11-30 15:35:58 24 4
gpt4 key购买 nike

这是我的问题。我的代码中没有得到正确的 char* 返回值。这是我的部分代码

主要功能:

int main(int argc, char *argv[]){
....
....
while (counter < line_C){
char* zzz = searcher(line_arr[counter], 0);
prog_counter[prog_counter_C] = atoi(zzz);
prog_counter_C++;
counter++;
}
}

zzz 获取了正确的指针,但该值似乎被覆盖了。以下是更多代码片段,用于显示搜索器功能的运行时。

char* searcher(char input[], int method){
...
...
else if (strncmp(instruction,"ADD", 3) == 0)
return ADD(passer, method, 0);
...
...
}

添加功能的代码片段:

char* ADD(char input[], int method, int bytecount){
switch(method){
case 0:
char wtf[2];
char *returner = itoa(Parse_Prog_Count(input), wtf, 10);
return returner;
break;
}

Parse_Prog_Count 函数的代码片段:

int Parse_Prog_Count(char input[]){
...
...
return bytecount;
}

我确实尝试过调试,我从 Parse_Prog_Count 获得了正确的返回值,然后 ADD,但是当它从搜索器返回到 main 的最后一个返回值时,该值是错误的。

我也尝试先捕获从ADD到搜索器的值来检查该值,并且返回值仍然是正确的。这是我遇到问题的最后一关。zzz 的值似乎发生了变化。

最佳答案

您将 wtf 声明为堆栈上的局部变量,其作用域为 ADD 函数:

char* ADD(char input[], int method, int bytecount){
switch(method){
case 0:
char wtf[2];
char *returner = itoa(Parse_Prog_Count(input), wtf, 10);
return returner;
break;
}

然后,您将在“*returner”中返回指向该堆栈内存的指针,当函数退出并超出范围时,您的数据也会如此。所以,你的指针现在指向谁知道什么。

关于c - 我在最终返回时没有得到正确的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745799/

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