*(a + i)
недействительно.Сначала необходимо *
разыменовать указатель a
, а затем добавить + i
.a
указывает на некоторую переменную, в a + i
нет.Вы выделили память на (*a) + i
.
Также вы хотите выделить память для n
подсчета int
с, а не для n
указателей на int
.Вы хотите: malloc(n * sizeof(int))
.
Используйте временную переменную, не используйте *(a + b)
, просто используйте a[b]
запись, сделайте ее более понятной:
void dynamic_allocation_array(int **a, int n) {
int *tmp = malloc(n * sizeof(int));
for(int i = 0; i < n; i++){
scanf("%d", &tmp[i]);
}
*a = tmp;
}
или вы можете:
void dynamic_allocation_array(int **a, int n) {
*a = malloc(n * sizeof(int));
for(int i = 0; i < n; i++){
scanf("%d", &(*a)[i]);
}
}
или вы можете:
void dynamic_allocation_array(int **a, int n) {
*a = malloc(n * sizeof(int));
for(int i = 0; i < n; i++){
scanf("%d", *a + i);
}
}