“右左右左”判别法

“右左右左”判别法

课堂上这一部分的内容没有太懂。

指针数组

指针数组:首先它是一个数组,数组的元素都是指针。

int *p[5]

数组指针

首先它是一个指针,它指向一个数组。

int (*p)[5]

指针函数

首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。

int *f()

函数指针

首先它是一个指针,指向函数。

int (*f)()

类型识别法 右左右左法

从变量名开始,先右再左地,交替地一个一个向外看,在纸上写下:“变量是”
若向右遇到左圆括号,在纸上写下:“函数,参数是”,并用同样的方法处理括号中每一个参数——在纸上写下:“返回”
若向右遇到方括号,在纸上写下:“数组,长度为{方括号的内容},元素类型为”
若向右遇到右圆括号,什么也不做
若向左遇到*,在纸上写下:“指针,指向”
若向左遇到任何类型,在纸上写下对应的类型名

- char (*(*x())[])()
- char (*(*x[3])())[5]

所以第一个x是一个函数,返回值是一个数组指针,这个数组的元素是函数指针。

第二个x是一个数组,长度为3,元素都是函数指针,函数的返回值是指向字符型,长度为5的数组的指针。

posted @ 2017-12-04 19:55  20155227辜彦霖  阅读(273)  评论(0编辑  收藏  举报