В начале main
мы имеем
m=3 n=5 // int m = 3, n = 5;
затем мы вызываем F(m, &n)
, передавая m
по значению и n
по указателю
такой, что
m = 3 n = 5
a = 3 b->n // F(m, &n);
Теперь внутри F()
мы присваиваем 7
a
:
m = 3 n = 5
a = 7 b->n // a = 7
затем мы присваиваем a
(= 7) адресу памяти, указанному b
(-> n)
m = 3 n = 7
a = 7 b->n // *b = a;
затем мы изменим b
, так что теперь b
указывает на a
:
m = 3 n = 7
a = 7 b->a // b = &a;
и затем мы присваиваем 4 адресу памяти, указанному b
(-> a)
m = 3 n = 7
a = 4 b->a // *b = 4;
печать a
(= 4) и *b
(-> a = 4)
и печать m
(= 3) и n
(= 7) вне функции