Причина получения значения мусора в C

#c #pointers

#c #указатели

Вопрос:

Я запускаю этот код и получаю некоторое значение мусора при печати * ptr. Что может быть возможной причиной и как я могу избежать этого?

 # include <stdio.h>
int main()
{
  int test = 1; 
  int *ptr = amp;test;
  *ptr   = 10; 
  test  ; 
  printf("nThe value is %d", *ptr);
}
  

Комментарии:

1. *ptr увеличивает указатель. Таким образом, он больше не указывает на допустимое местоположение. Измените это на *ptr = 10;

Ответ №1:

Вы переместились ptr с ptr . Почему?

Не делайте этого.

Ответ №2:

Оператор *ptr увеличивает указатель, который не может быть действительным для вашей программы. Перепишите инструкцию как *ptr = 10;