Поскольку параметр передается по значению.
Вы меняете arr
в insertion
, нет причин, по которым следует изменять arr
в main
. Это разные переменные. Вот как работает C.
Но в основном arr
- это массив, что означает, что его нельзя изменить, даже если вы правильно написали код.
Вот как это сделать все верно, если вы хотите что-то изменить в основном, вам нужно вернуть значение из вашей функции.
#include<stdio.h>
int* insertion(int* arr,int *n)
{
...
return arr; // return the new value of arr
}
int main()
{
int n=4;
int* arr = malloc(n*sizeof(int)); // arr is a pointer, not an array
for (int i = 0; i < n; ++i)
arr[i] = i+1;
arr=insertion(arr,&n); // get the returned value from insertion
for(i=0;i<n;i++)
{
printf("\t%d",arr[i]);
}
}