Скорее всего, вы делаете что-то в fill_in_x, что не правильно. Поскольку определения нет в посте, я не могу сказать, что, но это должно быть что-то вроде:
void fill_in_x(float** array) {
*array = (float*) malloc(10*sizeof(float));
}
(хотя возвращать выделенную память плохо, потому что это часто приводит к утечкам памяти, как в вашем коде.)
(отвечает на fill_in_x) : компиляция и запуск этого кода в Visual Studio дает ожидаемый результат.
#include <stdio.h>
#include <stdlib.h>
void fill_in_x(float** x, int num_vals)
{
*x = (float*)malloc(num_vals * sizeof(float));
for(int i = 0; i < num_vals; ++i)
(*x)[i] = (i*2)+3;
}
void function_using_a_and_b(float a, float b)
{
printf("%f\n", a);
printf("%f\n", b);
}
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
}
Пишет:
3.000000
2.000000
3.000000
2.000000
Так что я все еще не уверен, что вы имеете в виду. Я подозреваю, что проблемный код все еще отсутствует в посте.