Эти вызовы функции f
f(&i);
f(p);
не действуют.
Внутри функции g изменяется глобальная переменная i
int g(int* j){
return i+=*j;
}
Поскольку функция вызывается в цикле
for(;i<5;i++){
*p = g(p);
}
один раз для i
, равного 3
, тогда глобальная переменная i
будет равна i + 3 = 6
. Локальная переменная i
будет равна возвращенному значению глобальной переменной i
(равно 6) из функции, а затем будет увеличена в цикле. Поэтому после выхода из цикла оно будет равно 7
..
. Этот вызов
h(i,j);
выводит глобальную переменную i
и передает в качестве аргументов локальные переменные i
иj
. Таким образом, его вывод будет 6,7,5
.