关于C语言中数组指针、函数指针、指针数组、函数指针数组、指向函数指针数组的指针一直比较绕,稍微整理一下。
到底是指针还是数组?
其实到底是指针还是数组还是看变量名与[] 先结合还是* 先结合。我们知道C语言中 的优先级 () > [] > * ,所以int * arr[6] 其实是一个数组,因为 arr 先与[] 结合定义一个数组,其次才是* 。然而int (*pt)[6] 是一个指针,因为 () 的优先级大于[] 导致 pt 先与* 结合定义一个指针
指针数组
int * arr[6] 指针数组首先是个数组。数组中的每个(6个)元素都是指针(指向 int 类型的指针)
数组指针
int (*pt)[6] 数组指针首先是个指针。指针指向一个数组(包含 6 个元素),该数组每个元素都是 int 类型。pt 是指针的名字,数组的名字未知。指针的值是某个数组的地址
函数指针
int * (*pt)(char *c) 函数指针首先是个指针。指针指向一个函数,该函数返回一个 int 类型指针,接受一个 char 类型指针的形参。pt 是指针的名字,函数的名字未知。指针的值是某个函数的地址
函数指针数组
int * (*arr[6])(char *c) 函数指针数组首先是个数组。这个数组(包含 6 个元素),每个元素都是一个函数指针。这些指针都指向某一个函数,该函数返回一个 int 类型的指针,接受一个 char 类型指针的形参
指向函数指针数组的指针
int * (*(*pt)[6])(char *c) 指向函数指针数组的指针首先是个指针。指针指向一个数组(包含 6 个元素),该数组每个元素都是一个函数指针。这些指针都指向某一个函数,该函数返回一个 int 类型的指针,接受一个 char 类型指针的形参
有不对的地方还望大家指正,如果对你有帮助帮我点个赞吧 =.=
|