指针数组、指针常量、指针函数
指针是C/C++特有的结构类型,也是最难理解的部分,有很多容易混淆的相关术语,rt。指针本身是个数据类型,指向特定数据。我们可以这样理解:指针对应与一个仪表盘的指针,其指向的地址就是表盘上数据。
- 指针数组与数组指针
- 指针常量与常量指针
- 指针函数与函数指针
记忆方法有很多,不理解的时候就死记呗,然后用的时候慢慢领悟。上面上个记起来其实很简单,怎么念的通就是怎么个意思,如下:
指针数组:存放指针的数组,还能读成别的么?只有这么读这个词才有意义。int *p[]
数组指针:指向数组的指针;int (*p)[]
指针常量:这个指针是常量;int * const p
常量指针:指向常量的指针;int const *p
指针函数:返回指针的函数; int* f()
函数指针:指向函数的指针 int (*f)(); f=fun; int fun()
最后一个也是最好理解的,在此不赘述。
指针常量,既然这个指针是常量,那么指针指向不能更改,但是指针指向的内容可以改变,也就是说,仪表盘上的指针现在锁死不能摆动了,但是表盘是可旋转的了。
常量指针,指向常量的指针,也就是指针所指向的内容是常量,不可变,但是指针可以指向别处。也就是说,仪表盘指针可以转动,但是表盘是固定的。
指针数组与数组指针
A)int *p[];指针数组
B)int (*p)[];数组指针
我们可以根据符号优先级来理解,括号优先级高于星号,只看变量p的类型,可知A中p是一个数组,而B中p是一个指针。有了p的类型,剩下的就是类型的功能了,比如,A中p是数组,那这个数组的功能是……存指针,再比如,B中的p是指针,这个指针的功能是……指向数组咯。
怎么解释好理解好记忆,并且不失其本身意义,是教育者该考虑的。