Вам нужно изменить *p = &x;
.Вместо этого используйте p = &x;
.
Это сбой, потому что вы используете *p
для неинициализированного указателя.Когда вы объявляете int* p;
, значение инициализации p
не определяется спецификациями C Language .Вы также пытаетесь присвоить адрес (&x
) заполнителю int
(*p
, значение указано p
).
Итак, при попытке отменить ссылку на p
указав на следующее предложение, выполнив *p
, вы, вероятно, пытаетесь получить доступ к области памяти, недоступной для вашего процесса.
p = &x; // you are pointing p to x variable memory location
printf("%d\n",*p); // should print 6
*p = 10;
printf("%d\n",*p); // should print 10
printf("%d\n",x); // should also print 10