这两天学习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个元素的数组
  • 数组的元素为函数的指针
  • 函数的参数有两个
  • 总结起来是,类型为指针的含有五个元素的数组,注意最终是数组

标签: none

添加新评论