我理解变量本质就是一个内存空间,变量值是空间里面放的数据 ,变量地址是这块空间的地址编号,变量名是空间名称,我们可以通过地址或者变量名访问空间里面的数据,变量一旦定义则地址固定了,无法修改,二进制指针测试代码: 思考为什么 一级指针偏移后 通过二级指针取值也发生变化了
#include <stdio.h>
int main()
{
int a[3] = {0, 1, 2};
int *p = a;
int **p1 = &p;
printf("%d\n", *p);
printf("%d\n", **p1);
p++;
printf("%d\n", *p);
printf("%d\n", **p1);
return 0;
}
输出结果
0
0
1
1
分析如下 变量p内部数据从x1 变为x2 (x1,x2 是数组元素地址)但p自己的地址是不变的 所以 p1 存放的还是xp 所有p++之后**p1 之后结果是1