Вот ваша ошибка:
*p = x;
Вы разыменовываете p
, который не назначен, и присваивает ему текущее значение x
.Таким образом, x
не изменилось, потому что вы не передали указатель на x
своей функции, и разыменование неинициализированного указателя вызывает неопределенное поведение .
Вместо этого вы хотите присвоить адрес x
p
:
p = &x;
В качестве альтернативы, вы можете полностью удалить p
и просто передатьадрес от x
до inc
:
inc(&x);