变量“ x”在此处使用时未初始化

时间:2018-11-09 17:27:26

标签: c

#include <stdio.h>
int main(void){
   int *x;
   *x = 100;
   printf("\n *x = %d \n &x = %p \n sizeof(x) = %lu \n",
          *x,(void*)x,sizeof(x));
   return 0;
  }

我认为我错过了该计划的内容,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

您应该像

一样初始化x
int a;
int* x = &a;
*x = 100; // a = 100

答案 1 :(得分:1)

定义int *x;时,x的实际(应该是int变量的地址)未初始化,因为您没有尚未为其分配任何值。 *x = 100;的意思是“将x中包含的存储位置的值设置为100”。但是,由于您从未设置过x的值,例如通过执行类似int y; x = &y的操作,因此x指向的内存位置是某个随机值。

答案 2 :(得分:0)

#include <stdio.h>
int main(void){
   int y = 0;
   //int *x;
   int *x = &y; //Need to assign x an address to point to, or else its stack garbage and could be anywhere...
   *x = 100;
   printf("\n *x = %d \n &x = %p \n sizeof(x) = %lu \n",
          *x,(void*)x,sizeof(x));
   return 0;
  }