我有一个简单的函数,在它返回之后,更改了数组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;
}
答案 0 :(得分:5)
您将返回一个指向超出范围的局部变量的指针。这是未定义的行为。任何事都可以而且将会发生。
答案 1 :(得分:3)
你在这里也有一个更大的问题:
double raizes[2];
.... function ....
return raizes;
您正在返回指向已在堆栈上为本地函数创建的值的指针。 不好,永远不要那样做。
传递和输入输出数组。
void bhaskara(const double a[], double raizes[]){