1.变量放在哪里?
定义一个变量,实际上就是向计算机申请一块内存来存放。那么变量到底存放到哪里了呢?可以通过&运算符取得变量的实际地址,这个值就是变量内存块所占的起始地址。
(PS:实际上这个是虚拟地址,并不是真正的物理内存上的地址)
我们可以把这个地址打印出来
int a = 0; printf("%p ", &a);
0x006BF898
2.指针本质
上面说,我们可以通过&符号获取变量的内存地址,那获取之后如何表示这是一个地址,而不是一个普通的值呢?也就是在C语言中你如何表示地址这个概念呢?
对,就是指针,你可以这样
int* pa = &a;
pa中存储的就是a的地址,也叫做指向a的指针。
3.解引用
pa中存放的是变量a的地址,那如何通过地址去获取a的值呢?
这个操作叫做解引用,在C语言中通过运算符*就可以拿到一个指针所指向的地址的内容了。
比如*pa就能获取a的值。
int a = 0;
int* pa = &a;
*pa = 1;
printf("%d", *pa);
打印结果
1
我们说指针存储的是变量内存的