0

我有一个简单的函数,在它返回后,数组 a[] 的值(作为参数传递)被更改。问题是它们甚至没有写在函数中,只是读取-据说,至少-。希望你能帮助我:

double *bhaskara(double a[]){
    double A = a[2], B = a[1], C = a[0];
    double raizes[2];
    double delta = B*B - 4*A*C;
    if(delta<=0){//ignora delta para pegar soh a parte inteira das raizes
        raizes[0] = -B/(2*A);
        raizes[1] = raizes[0];
    }else{
        raizes[0] = (-B+sqrt(delta))/(2*A);
        raizes[1] = (-B-sqrt(delta))/(2*A);
    }
    return raizes;
}
4

2 回答 2

5

您正在返回一个指向已超出范围的局部变量的指针。这是未定义的行为。任何事情都可能而且将会发生。

于 2013-05-18T19:05:47.930 回答
3

您在这里也有一个更大的问题:

 double raizes[2];
   .... function ....
 return raizes;

您正在返回一个指向已在堆栈上为本地函数创建的值的指针。糟糕,永远不要那样做。

传递和输入输出数组。

void bhaskara(const double a[], double raizes[]){
于 2013-05-18T19:07:45.100 回答