在C中获取垃圾值的原因

在C中获取垃圾值的原因,c,pointers,C,Pointers,我正在运行这段代码,在打印*ptr时得到一些垃圾值。可能的原因是什么?我怎样才能避免这种情况 # include <stdio.h> int main() { int test = 1; int *ptr = &test; *ptr++ = 10; test++; printf("\nThe value is %d", *ptr); } #包括 int main() { int检验=1; int*ptr=&test; *ptr++=10; 测试++

我正在运行这段代码,在打印*ptr时得到一些垃圾值。可能的原因是什么?我怎样才能避免这种情况

# include <stdio.h>
int main()
{
  int test = 1; 
  int *ptr = &test;
  *ptr++ = 10; 
  test++; 
  printf("\nThe value is %d", *ptr);
}
#包括
int main()
{
int检验=1;
int*ptr=&test;
*ptr++=10;
测试++;
printf(“\n值为%d”,*ptr);
}

您使用
ptr++
移动了
ptr
。为什么?


不要那样做。

你用
ptr++
移动了
ptr
。为什么?


不要这样做。

语句
*ptr++
会增加对程序无效的指针。
将语句重写为
*ptr=10

语句
*ptr++
增加对程序无效的指针。
将语句重写为
*ptr=10

*ptr++
递增指针。因此,它不再指向有效位置。将其更改为
*ptr=10
*ptr++
递增指针。因此,它不再指向有效位置。将其更改为
*ptr=10