C函数参数值自行更改

And*_*ade 0 c precision memory-management

我有一个简单的函数,在它返回后,更改了数组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;
}
Run Code Online (Sandbox Code Playgroud)

chr*_*ris 5

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