1. 指针是什么东西

      下面是一条指向整型变量的指针的声明语句

      1. int *pi;

      注意,声明后的pi是一个指针,同时它也是一个变量,也会存放在内存里,如下图所示
      image.png

    继续看代码

    1. pi = &i;

    考虑到&i是给出变量i的内存地址,这行代码也就非常清楚了,意思是将i的内存地址赋值给(指针变量)pi,此时pi就相当于那张电影票,赋值后它存储的内存地址就是电影票上的编号(方便寻找)。
    结果如下图所示
    image.png

    最后一句代码

    1. printf("%d", *pi);
    2. *运算符被称为间接值(indirect velue)或解除引用(dereferencing)运算符,将其应用于指针,可以得到该地址处存储的值

    显然输出后的结果是30

    我们看一个完整的C++代码以及运行结果

    1. //代码2.1
    2. #include <iostream>
    3. int main()
    4. {
    5. using namespace std;
    6. int a,*pa;
    7. a = 10;
    8. pa = &a;
    9. *pa = 20;
    10. cout << a <<endl;
    11. }

    注意,此时*取值运算符比=赋值符优先级要高