#include <iostream>
using namespace std;
int main() {
/*
存储地址的变量叫指针
比如这是一个字符变量a 这是一个指针变量pa
0XE0AFF614 内存地址 0x8324782 内存地址 这地址是十六进制的
10 变量值 0XE0AFF614 变量值
a 变量名 pa 变量名
也就是说指针也有一个地址,但是他的变量值是变量a的地址
*/
int a = 10;
int b = 20;
//1.指针变量的定义
//数据类型 *指针变量名;
int* pa;//这一步是定义出一个指针变量来跟普通的变量有所不同
pa = &a;//这一步是把a的地址赋值给指针pa,这一步就是精准定位啊,无论你a的地址怎么变,我pa都能把你找到,如果是普通的变量的话,地址只是变化前的
//pa = &b;//指针是可以多次赋值的,现在pa变成b的地址了
printf("%#X %#X\n", &a, pa);
//2.指针的解引用 拿到a的地址了,接下来该干点啥了,我现在要拿到a的值做一些修改
//*指针变量名=数值;这么整就可以
*pa = 7;
cout << a<< ' ' << (*pa) << endl;
//*和&的关系
//*&a =*(&a)=*pa=a 这个意思就是对a取地址再解引用得到的就是a
//&*pa = &(*pa) = &a = pa 所以说&和*就是一个互逆的关系相当于+和-,先计算右边
return 0;
}