Я новичок в C, и у меня есть сомнения.
Так как функции C создают локальные копии его аргументов, мне интересно, почему следующий код работает так, как ожидалось:
void function(int array[]){
array[0] = 4;
array[1] = 5;
array[2] = 6;
}
int main(){
int array[] = {1,2,3};
function(array);
printf("%d %d %d",array[0],array[1],array[2]);
return 0;
}
При линейном выходе 4 5 6.
Почему это работает, а следующее не работает?
void function(int integer){
integer = 2;
}
int main(){
int integer = 1;
function(integer);
printf("%d",integer);
return 0;
}
В этом случае вывод будет всего 1.
Краткая версия: почему функции могут изменять значения своих родительских переменных, если они переданы как массив?
Спасибо всем!