У меня проблема с получением значения из указателя. У меня есть следующий код в 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 = #
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;
}
Результат выполнения этого кода следующий:
NUMBER 65,5 RESULT_READARRAY -1.2001
// НЕПРАВИЛЬНО ДОЛЖНО БЫТЬ, КАК НОМЕР
Плавающая ссылка: 65,5 // ПРАВИЛЬНО
NUMBER 66,5 RESULT_READARRAY -1.2001
// НЕПРАВИЛЬНО ДОЛЖНО БЫТЬ, КАК НОМЕР
Плавающая ссылка: 66,5 // ПРАВИЛЬНО
По какой-то причине, когда я получаю значение указателя, возвращаемое функцией readArray, неверно. Я передаю переменную с плавающей точкой (d) в качестве ссылки в той же функции, просто чтобы убедиться, что значение в порядке, и, как вы можете видеть, FLOAT REFERENCE соответствует NUMBER. Если я объявлю переменную num (чтение массива) как статическое значение с плавающей точкой, первое RESULT_READARRAY будет 65,5, что правильно, однако следующее значение будет таким же, а не 66,5. Позвольте мне показать вам результат выполнения кода с использованием статической переменной с плавающей точкой:
NUMBER 65,5 RESULT_READARRAY 65,5
// ИДЕАЛЬНАЯ ПЛОЩАДКА: 65,5
// ¨PERFECT
НОМЕР 65,5 // ЭТО НЕПРАВИЛЬНО, ЭТО
ДОЛЖНО БЫТЬ 66,5 RESULT_READARRAY 65,5
Плавающая ссылка: 65,5
Знаете ли вы, как я могу получить правильное значение, возвращаемое функцией readArray ()?