Аргументы передаются по значению , если только аргумент специально не объявлен как переданный по ссылке , и массивы будут затухать до указателя на их первый элемент при передаче в функции.
Функция changer
не обновляет фактическую переменную a
, поскольку она получает только свое значение, а не саму переменную.
Если вы хотите обновить значение в вызове функции, вам нужнопередать его по ссылке:
void make20(int *a)
{
*a = 20;
}
Тогда вызов будет выглядеть так:
int n = 5;
make20(&n);
// now n = 20