今天继续对指针进行研究,话不多说,进入正题:
指针数组与数组指针:
关于这两者的介绍,在http://www.cnblogs.com/webor2006/p/3463918.html有介绍,下面简单回忆下:
以下通过一些示例来进一步理解指针数组和数组指针:
示例一:
输出结果:
示例二:
运行结果:
示例三:
输出结果:
指针数组与二维数组:
基于上面的实现,再来通过一个图来总结下指针数组与二维数组:
指针的指针:
下面通过一程序来直观的感受下:
运行:
下面通过一个实例来说明下指针的指针的使用场景:
运行结果:
上图中可以看到find函数使用了指针的指针,那为什么要用它呢,我用一级指针是否能达到同样的目的呢,来看下面的尝试:
编译运行:
这是为什么呢?下面来对其两种实现方式进行分析:
先分析一级指针的错误实现方式:
要想通过形参来改变实参指针的地址,这时就得采用指针的指针的,这也就是为什么要用它的原因,下面接着来分析为啥用指针的指针能改变实参指针地址:
所以,通过指针的指针,就能改变指针本身的地址。
指针的指针注意点:
下面进行说明:
编译运行:
运行结果:
解释一下“
char** p = color;
”所以,如果访问p[0]的内容,则会出错:
运行:
它对应的内存模型为:
输出:
但是下面这个得注意了:
运行:
好了,今天指针的探讨先互这,要理解清楚指针,就得搞清楚数据存放的内存模型,下次见!!