指针的初识和解引用

让我们来 看一下以下的代码

int a=10;

int b=20;

int *p= &a;

*p=10;

p=&b;

*p=200;

p=&a;

int **pp=&p;

*pp=&a;

**pp=1000;

*pp=&b;

**pp=2000;

看到这样的代码是不是一脸的懵逼,现在让我们来看看他的每一句都是什么意思。

开始之前我们先了解一下指针和解引用。

指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。当然这是官方语言,(通俗说;指针就是地址,可以通过它找到以它为地址的内存单元

解引用 "*"的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解"就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为"解引用”。

接下来我们来看看每一句都是什么意思。

int *p= &a;     //定义一个整型指针p 并且p指向了a的地址 (&取地址)

*p=10;        //解引用, 即 给a赋值10;

p=&b;        // p指向了 b的地址

*p=200;     //解引用, 即 给b赋值200;

p=&a;      // p指向了a的地址

int **pp=&p;    // 定义一个整型的指针 pp 并且pp 指向了 p的地址

*pp=&a;        // pp指向了p的地址  p指向了a的地址 即pp指向了a的地址

**pp=1000;     //解引用,即给a赋值1000;

*pp=&b;     //  pp指向了p的地址  p指向了b的地址 即pp指向了b的地址

**pp=2000;   //解引用, 即 给b赋值1000;

这里我们需要注意一下  在定义是*p  代表的是,定义一个指针,而其他的时间都是 解引用。