Immer Wert von Zeiger

Ich habe problem immer den Wert von einem Zeiger. Ich habe den folgenden code in C++:

void* Nodo::readArray(VarHash& var, string varName, int posicion, float& d)  
{  
    //some code before...
    void* res;  
    float num = bit.getFloatFromArray(arregloTemp); //THIS FUNCTION RETURN A FLOAT AND IT'S OK  
    cout << "NUMBER " << num << endl;            
    d = num;  
    res = &num;  
    return res  
}  

int main()  
{  
    float d = 0.0;  
    void* res = n.readArray(v, "c", 0, d); //THE VALUES OF THE ARRAY ARE: {65.5, 66.5};   
    float* car3 = (float*)res;  
    cout << "RESULT_READARRAY " << *car3 << endl;  
    cout << "FLOAT REFERENCE: " << d << endl;  
}  

Das Ergebnis der Ausführung dieses Codes sind die folgenden:

ANZAHL 65.5 RESULT_READARRAY -1.2001

//FALSCH, ES SOLLTE WIE ANZAHL

FLOAT-REFERENZ: 65.5 //RICHTIGE

NUMMER 66.5 RESULT_READARRAY -1.2001

//FALSCH, ES SOLLTE WIE ANZAHL

FLOAT-REFERENZ: 66.5 //RICHTIGE

Aus irgendeinem Grund, wenn ich den Wert des Pointers zurückgegeben von der Funktion, die aufgerufen wird readArray ist falsch. Ich bin vorbei an eine float-variable(d) als eine Referenz in der gleichen Funktion, nur um zu überprüfen, ob der Wert ok ist, und wie Sie sehen können, DIE FLOAT-REFERENZ entspricht der ANZAHL. Wenn ich deklarieren Sie die variable num(read-array) als static float, dem ersten RESULT_READARRAY werden 65.5, das ist richtig, jedoch wird der nächste Wert wird der gleiche sein, anstelle von 66,5. Lassen Sie mich Ihnen zeigen, das Ergebnis der Ausführung den code mit static float-variable:

ANZAHL 65.5 RESULT_READARRAY 65.5

//PERFEKTE FLOAT-REFERENZ: 65.5

//PERFEKTE

ANZAHL 65.5 //DIES IST FALSCH, ES

SOLLTE 66.5 RESULT_READARRAY 65.5

FLOAT-REFERENZ: 65.5

Wissen Sie, wie bekomme ich den richtigen Wert von der Funktion zurückgegeben wird genannt readArray()?

InformationsquelleAutor Eric | 2010-05-04
Schreibe einen Kommentar