#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;
}
我认为我错过了该计划的内容,有人可以帮助我吗?
答案 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;
}