今天继续对指针进行研究,话不多说,进入正题:
指针数组与数组指针:
关于这两者的介绍,在http://www.cnblogs.com/webor2006/p/3463918.html有介绍,下面简单回忆下:

以下通过一些示例来进一步理解指针数组和数组指针:
示例一:

输出结果:

示例二:


运行结果:

示例三:

输出结果:

指针数组与二维数组:
基于上面的实现,再来通过一个图来总结下指针数组与二维数组:

指针的指针:

下面通过一程序来直观的感受下:

运行:

下面通过一个实例来说明下指针的指针的使用场景:

运行结果:

上图中可以看到find函数使用了指针的指针,那为什么要用它呢,我用一级指针是否能达到同样的目的呢,来看下面的尝试:

编译运行:

这是为什么呢?下面来对其两种实现方式进行分析:
先分析一级指针的错误实现方式:


要想通过形参来改变实参指针的地址,这时就得采用指针的指针的,这也就是为什么要用它的原因,下面接着来分析为啥用指针的指针能改变实参指针地址:


所以,通过指针的指针,就能改变指针本身的地址。
指针的指针注意点:

下面进行说明:

编译运行:


运行结果:

解释一下“
char** p = color;
”
所以,如果访问p[0]的内容,则会出错:

运行:


它对应的内存模型为:


输出:

但是下面这个得注意了:

运行:

好了,今天指针的探讨先互这,要理解清楚指针,就得搞清楚数据存放的内存模型,下次见!!