剖析一级指针和二级指针

        首先我们要理解指针这个概念,那么什么是指针呢?

        指针是编程语言中的一个对象,利用地址,它的值直接指存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

        总而言之,指针就是用来存放地址的,可以通过指针所指向的地址找到所指向内存单元的内容。

一级指针:   

        我们可以形象化的把内存单元当作一个房间,房间里的东西就相当于是内存单元中存放的内容,那么指针就可以看作是这个房间的门牌号,这里的门牌号就相当于地址,给你了门牌号,你就可以通过门牌号找到这个房间了。也就是上面所说的通过指针所指向的地址找到所指向内存单元的内容。

       假设上面有一段内存单元,里面分别存储着1,2,3,4。现在有一个指针变量p指向 1 所在的内存空间,这块内存空间的地址是0x01AC7F82,指针是用来存放地址的,所以指针p里存放的是地址0x01AC7F82。

       定义一个指针变量p:                    int a = 1;

                                                           int * p = &a;

       这里你把它写成这样                   int *      p = &a;

       为什么要在中间空这么多呢,你可以将前面的 int * 看作是一个类型,就好比 int型 ,char型这种,这里它表示的是一个指针类型,只不过它是指向整形int类型的指针变量;同理char * 也是指针类型,只不过它是指向字符char类型的指针变量。

       后面的 p 是一个变量,即所谓的指针变量,这个变量所存放的就是变量a存放的内容的地址。

二级指针:

       理解了一级指针,二级指针也不难理解,通过一级指针我们可以得到这个变量的地址,那么二级指针就可以得到这个变量地址的地址。这里看个图理解一下:

       这里定义一个变量 a = 1; 定义一个一级指针pa 指向变量a; 又定义了一个二级指针 ppa 指向指针变量 pa。

       指针变量pa 取到的是变量a所在内存单元的地址0x0056780A,

       二级指针变量ppa 取到的是一级指针变量pa 所在内存单元的地址 0x00808001。

       同理一级指针与二级指针已经理解了,那么多级指针也就可以理解了,只是指针越多越复杂,所以一般解决问题时不用更高级的指针。

猜你喜欢

转载自blog.csdn.net/Watery________1314/article/details/83928629