C 函数参数值自行改变

标签 c memory-management precision

我有一个简单的函数,在它返回后,数组 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 函数参数值自行改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627922/

相关文章:

c - 数组本身的名称,它存储在哪里

iphone - map 套件中的 GPS 精度不如 Maps.app 中那么精确

c - 区分c中的0和0.0作为while循环的中断条件

动态改变返回类型?

c - 汉明码 - 错误检测和纠正

c - 如何在 C 中将 int 转换为 5 位 2 补码?

python - 了解递归调用中的 Python 列表内存使用情况

C 何时分配和释放内存 - 在函数调用之前,函数调用之后......等

javascript - JS中整数除法的精确性

c - 宏三元逗号表达式用作语句时会导致警告