Я пытаюсь реплицировать функции linspace из Matlab и numpy (python) в C, однако я получаю предупреждение о разыменовании нулевого указателя .
Я очень новичок в C и раньше работал только в Matlab, python и lua, указатели - это что-то, что можно попробовать и обернуть мне в голову!
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double* linspace(double init, double fin, int N) {
double *x;
int i = 0;
double step = (fin - init) / (double)N;
x = (double*)calloc(N, sizeof(double));
x[i] = init; /*<=== Line 14*/
for (i = 1; i < N; i++) {
x[i] = x[i - 1] + step;
}
x[N - 1] = fin;
return x;
}
int main() {
double *x_array = linspace(0, 10, 1000);
printf(&x_array);
free(x_array);
return 0;
}
И Я получаю точное предупреждение:
Warning C6011 Dereferencing NULL pointer 'x'. Line 14
Очевидно, я уверен, что это просто ошибка ладьи ie, но я не уверен, как ее отсортировать!
Спасибо.