“右左右左”判别法
“右左右左”判别法
课堂上这一部分的内容没有太懂。
指针数组
指针数组:首先它是一个数组,数组的元素都是指针。
如int *p[5]
数组指针
首先它是一个指针,它指向一个数组。
如int (*p)[5]
指针函数
首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
如int *f()
函数指针
首先它是一个指针,指向函数。
如int (*f)()
类型识别法 右左右左法
从变量名开始,先右再左地,交替地一个一个向外看,在纸上写下:“变量是”
若向右遇到左圆括号,在纸上写下:“函数,参数是”,并用同样的方法处理括号中每一个参数——在纸上写下:“返回”
若向右遇到方括号,在纸上写下:“数组,长度为{方括号的内容},元素类型为”
若向右遇到右圆括号,什么也不做
若向左遇到*,在纸上写下:“指针,指向”
若向左遇到任何类型,在纸上写下对应的类型名
- char (*(*x())[])()
- char (*(*x[3])())[5]
所以第一个x是一个函数,返回值是一个数组指针,这个数组的元素是函数指针。
第二个x是一个数组,长度为3,元素都是函数指针,函数的返回值是指向字符型,长度为5的数组的指针。