#include <iostream>

using namespace std;

char a, b;

int main(){
    int a = 10;
    
    //下面这个*和下下面那个*含义不一样 这个*指的是我定义的这个变量是指针类型 这个变量的名字是p 注意变量名字和*没有关系 可以写成 int* p = &a;
    int *p = &a;//定义指针 就是在变量前面加一个*表示p是一个int类型变量的指针 怎么赋值呢? 我们想希望让指针p的值 = a的地址就是 = &a;
    //此时p的变量本身存的值就是a的地址
    //现在*p就是取到a的值了
    
    //因为存变量地址的这个变量也有一个地址
    //我们也可以看下存变量p的这个地址
    int** q = &p;
    //所以指针也是有指针的
    cout << q << endl;//所以q就是存放p指针的地址
    
    cout << *p << endl;//这个*的意思是我先取变量p 我想求这个变量p的值的时候我可以在前面加个* 这个*其实是个操作符和!类似
    
    *p = 12;//这个*p的值也可以赋值
    cout << *p << endl;
    
    //按道理a的值也就是地址*p也就是地址的值 所以a的值也会发生相应的变化
    cout << a << endl;//所以我们可以通过指针来修改变量的值
    
    //跟数组下标很像
    int c[10];
    
    c[2] = 2;//可以通过数组下标来修改这个下标的值
    
    return 0;
}