int* (*a[5])(int, char*); 是什么意思
这两天学习C语言,遇到这样一个定义 int* (*a[5])(int, char*);
一眼望去,头大,
找了好多解读总算搞明白了,下面把自己的感想记录一下
网上的结果
我们知道 类型 变量 ;
表示的定义一个变量如果是这种形式 类型 变量();
表示声明一个函数
这个表达式 int* (*a[5])(int, char*);
从轮廓上看,是声明一个函数,函数的返回值是一个整形的指针
- int* 表示是一个int型指针;
(*a[5])(int, char*)
中的a[5]
表示是一个有5个元素的数组- 而
(*)(int, char*)
则表示指向一个函数的指针,该函数有两个参数,第一个参数为int型,第二个是字符指针型 - 结合前面部分,表示这个函数的返回类型为int型,所以
(*a[5])(int, char*)
为5个返回类型为int型函数组成的数组; - 整个结合起来
int* (*a[5])(int, char*);
就是指向5个返回类型为int型函数组成的数组的指针变量,变量名为a. 本质是指向数组的指针,该数组是函数而已。
上面是百度知道找到的我的理解
- 类型为指针
- 5个元素的数组
- 数组的元素为函数的指针
- 函数的参数有两个
- 总结起来是,类型为指针的含有五个元素的数组,注意最终是数组