gpt4 book ai didi

c - 如何更改另一个函数的指针值?

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

我一直在努力处理这段代码,但我无法真正弄清楚它出了什么问题。该代码只是从用户处获取一个输入整数 k,将其与 double 类型的指针一起传递给 powerOfTen 函数,并计算结果。但是,当我将结果存储在 *my_dbl 中并尝试通过 *my_double 打印该值时,我什么也没得到。

#include <stdio.h>

void powerOfTen(int k, double *my_dbl);

int main()
{
int k;
double *my_double;

scanf("%d", &k);
power_of_ten(k, my_double);
printf("%.15lf\n", *my_double);
}

void power_of_ten(int k, double *my_dbl)
{
double result = 1.0;

if(k >= 0){
for(int i = 0; i < k; i++) result = result*10.0;
} else{
for(int i = 0; i < (0-k); i++) result = result/10.0;
}
// printf("%f\n", result);
*my_dbl = result;
}

最佳答案

指针从未初始化。最简单的修复是:

int main(int argc, char **argv)
{
int k;
double my_double;

k = argc > 1 ? strtol(argv[1], NULL, 10) : 5;
power_of_ten(k, &my_double);
printf("%.15lf\n", my_double);
}

原代码中,未初始化的指针my_double尚未指向有效的内存位置,因此尝试写入 *my_dbl在函数失败时。它基本上将数据写入内存中的某个随机位置。不同的修复方法如下:double value; double *my_double = &value 。另一个可能是 double my_double[1] 。无论您做什么,您引用的地址都必须是写入有效的位置。

关于c - 如何更改另一个函数的指针值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60019692/

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