Я пытаюсь динамически создать массив в отдельной функции и сохранить некоторые переменные внутри этого массива, и я столкнулся со следующим: как получается, когда я пишу;
#include <stdio.h>
#include <stdlib.h>
void foo(int **arr, int N) {
*arr = malloc(sizeof(int));
for (int index = 0; index <= 4; index++) {
*arr[index] = 1;
}
}
int main() {
int *arr;
foo(&arr, 5);
for (int bar = 0; bar <= 4; bar++) {
printf("%d ", arr[bar]);
}
}
Я получаю этот вывод;
exited, segmentation fault
Однако, когда я запускаю следующее:
#include <stdio.h>
#include <stdlib.h>
void foo(int **arr, int N) {
*arr = malloc(sizeof(int));
}
int main() {
int *arr;
foo(&arr, 5);
for (int index = 0; index <= 4; index++) {
arr[index] = 1;
}
for (int bar = 0; bar <= 4; bar++) {
printf("%d ", arr[bar]);
}
}
я получаю этот вывод;
1 1 1 1 1
Я застреваю, пытаясь выяснить, как исправитьпервый блок кода, чтобы заставить его работать, но я, кажется, понятия не имею, как это сделать. Любая помощь будет полезна, по крайней мере, для понимания причин возникновения ошибки сегментации.