Может кто-нибудь объяснить, почему это не работает?
int main()
{
float* x;
float a, b;
int num_vals = 10;
fill_in_x(&x, num_vals); // malloc is called and x is populated with values
a = x[0];
b = x[1] - x[0];
printf("%f\n", a);
printf("%f\n", b);
function_using_a_and_b(a, b); // The values of a and b used in this function
// don't match those calculated in main
}
void fill_in_x(float** x, int num_vals)
{
*x = (float*)malloc(num_vals * sizeof(float));
// Fill in values for x
}
void function_using_a_and_b(float a, float b)
{
printf("%f\n", a);
printf("%f\n", b);
}
Чтобы повторить то, что сказано в комментариях, когда я динамически распределяю память для x в malloc в отдельной функции, затем пытаюсь передать пару значений в другую функцию, значения не передаются правильно. Это похоже на проблему с указанием, но я думал, что передаю значения a и b, а не адреса. Для справки, я даже попытался использовать memcpy, чтобы поместить значения в a и b, но это тоже не помогло.
Я заставил его работать, передав адреса a и b, а затем разыменовав их в function_using_a_and_b, но почему не работает описанный выше метод?
Заранее спасибо.