Ваша функция void red(int* wsk)
передает wsk
по значению , что означает, что локальная версия wsk
скопирована в функцию и изменения, сделанные в red
, не будут отражены в main
.
Один из способов решить эту проблему - вернуть новое значение wsk
в main:
int* red(int* wsk) // Return type changed
{
int i;
wsk = realloc(wsk,11*sizeof(int));
for(i=0;i<11;i++)
{
printf("value: %d num pointer:%p \n",wsk[i],wsk+i);
}
return wsk; // Return new wsk
}
, а затем изменить вызов в main на
wsk = red(wsk);
Так что wsk
в main
обновляется до wsk
, возвращаемого red
.
Также обратите внимание, что вы никогда не инициализировали wsk[10]
после вызова realloc()
и доступа к нему.приведет к более неопределенному поведению.