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 に答える