Мой вопрос касается динамического выделения памяти и арифметики указателей. У меня есть функция, которая вызывается в главной функции, и она должна заполнить массив n длинными значениями и динамически заполнить их последовательностью Фибоначчи.моя функция ниже, но она не дает правильного вывода.
long* make_fib_array(long n){
int i;
long *fib;
fib = (long*)malloc(sizeof(long)*n);
if (fib == NULL){
printf("ERROR: Out of memory\n");
return NULL;}
*fib = 0;
*(fib +1) = 1;
for (i=2;i<n;i++);{
*(fib +i) = *(fib + (i-1)) + *(fib + (i-2));}
for(i=0;i<n;i++){
printf("%ld\n",*(fib + i));}
return fib;}
, используя значения значений 0 и 1, печатайте нормально, но значения после этого очень большие и не ожидаемые.Я подозреваю, что это что-то делать с моей арифметикой указателя, но я не уверен, что это такое.