我有一个简单的函数,在它返回之后,数组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;
}

最佳答案

返回指向超出范围的局部变量的指针。这是不明确的行为。任何事情都会发生。

关于c - C函数参数值自行更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16627922/

10-11 16:18