我们经常遇到一些复杂的指针类型说明,很多初学者可能感觉有点蒙,其实按照一个法则来分析,就会觉得一点都不难
法则:从变量名开始,按照结合的优先级,一步一步来分析
说明:1、[]的优先级大于*
2、()的优先级大于指针
原则:1、指针与A结合,则指向所指向的内容是A
2、数组与A结合,则数组中的每一个元素的数据类型都是A
3、函数的标准形式为:函数返回值类型 函数名(参数列表)
int p //这是一个普通的整形变量
int *p //这是一个指针,指针指向的内容为整型数据
int p[3] //这是一个普通的数组,有3个元素,每个元素的数据都是整型
int *p[3] //p先于[]结合,说明这是一个数组,里面有3个元素,再与*结合,说明每个元素的类型都是指针,再与int 结合,说明每个指针都指向int 型
int (*p)[3] // p先和*结合,说明是一个指针,然后与[]结合,指针指向的内容是一个数组,该数组有3个元素,再与int结合,说明每个元素都是int型
int **p //是一个普通的二级指针
int p(int ) //一个普通的函数p,返回值为int型,函数参数为int型
int (*p)(int) //*p是一个指针,再与()结合,说明指针指向一个函数,再看()中的int ,说明该函数参数为int型,再结合最左边的int,函数的返回值也是int型
int *(*p(int))[3] // p先和()结合,说明p是一个函数,该函数参数为int型,再和*结合,说明该函数返回值是指针,再跟[]结合,说明该指针指向的是一个数组,该数组有3个元 // 素,再与*结合,每个元素的类型都是指针,然后每个指针都指向int型。