gpt4 book ai didi

c - 从c问题中的函数返回char指针

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

我尝试创建对 2 个字符串数字求和的函数,例如“888”和“9879”返回“10767”。

问题是,当我访问 main 的返回值时,我得到了垃圾。

typedef char* verylong;
verylong add_verylong(verylong vl1, verylong vl2);
int main(){
verylong result = add_verylong("888", "9879");
printf("%s\n", result);
return 0;
}
verylong add_verylong(verylong vl1, verylong vl2){
int len_1 = strlen(vl1);
int len_2 = strlen(vl2);
int vl1_number= 0;
int vl2_number = 0;
int mul = 1;
while(len_1 > 0){
int x = vl1[len_1-1] - '0';
x = x * mul;
vl1_number = vl1_number + x;
mul *= 10;
len_1--;
}
mul = 1;
while(len_2 > 0){
int x = vl2[len_2-1] - '0';
x = x * mul;
vl2_number += x;
mul = mul * 10;
len_2--;
}
int number = vl1_number + vl2_number;
int length = 0;
int temp = number;
while(temp > 0){
length += 1;
temp /= 10;
}
length++;
char string[length+1];
verylong result = string;
result[length--] = '\0';
while(number > 0){
int x = number % 10;
char c = x +'0';
result[length] = c;
length--;
number /= 10;
}
return result;
}

导致此问题的原因是什么?

最佳答案

函数返回后,函数中声明的所有非静态的内容都将从内存中删除。因此,函数执行后的结果地址将保存垃圾,而不是您想要的实际输出。

关于c - 从c问题中的函数返回char指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59760113/

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