#include <stdio.h>
void main()
{
int x,*p;
p=&x;
*p=10;
printf("%d\n",x);
}
供参考:
#include <stdio.h>
void main()
{
int x, * p; //定义了两个变量,x p 在内存划出一块空间,都有固定的地址
p = &x; //将变量 x 的地址值赋值给 指针 p
*p = 10; // *p解引用,这句等价于 x = 10;
printf("%d\n", x);
}
在声明int x的时候,x就已经分配了地址,只不过此时没有初始化,里面的值也能打印,但是会是个随机数(不确定是什么软件残留的)
而p这个指针指向了x的地址,给*p赋值就是在给x赋值
p本身指针变量,只用于存放地址,而p=&x就表示p本身存放入x所在内存的地址,也就是p指向了x;
*p=10中,则表示p指向的内存中存放入数值10,而此时p中本身的值还是一个地址,只是间接地把x变量赋值了而已。