数组打印出垃圾值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组打印出垃圾值相关的知识,希望对你有一定的参考价值。

我有一项锻炼,如果我必须编写一个使用公式来计算e ^ x的递归函数。我设法做到了,但是练习表明我必须将结果存储在数组中,这是我碰到的地方,这是我的代码:

double exp (double x, int n, int* fakt, double* xpot) 

static double result;
static int i;
static double *A;
A  = (double *) malloc(n * sizeof(double));

if (i == n)

    for(int k = 0; k < n; k++)
        cout << A[k]; //this prints out garbage values
    return result;



if (i != 0 || i != 1)

    for (int j = 1; j <= i; j++)
    *fakt = *fakt * j;



*xpot = pow(x, i);


result += *xpot / (double)*fakt;
A[i] = result;

*fakt = 1;

i++;

return exp(x, n, fakt, xpot);

我将数组作为函数参数传递,但任务明确指出:

double exp (double x, int n, int *fakt, double *xpot);

是原型。我的问题是,为什么循环会打印出垃圾值,并且有办法解决它?

答案

您没有初始化A的值,这就是为什么打印垃圾的原因。

也:

  • [if (i != 0 || i != 1)等于if (true)
  • 每次调用exp函数都会泄漏大量内存... A永远不会freed

以上是关于数组打印出垃圾值的主要内容,如果未能解决你的问题,请参考以下文章

数组声明为 unsigned char 时的垃圾值

从共享内存打印垃圾值

打印垃圾值,Arduino HC-05 蓝牙模块

向量 push_back 的垃圾值

将 javascript 字符串传递给 std::string 打印垃圾值

将值分配给二维数组时的垃圾值