美文网首页
c语言基础-复杂的函数指针

c语言基础-复杂的函数指针

作者: 絮语时光杨 | 来源:发表于2018-08-15 15:27 被阅读11次

分析方法:右左法,遇到括号返方向
int (* func)(int * p);
  分析: func - 右) - 左 * - func是一个指针,更新当前类型为指针 - 左( - 跳出括号 - 右( - 查表得指针指向函数,func是一个函数指针,()里的为函数参数,更新当前类型为函数 - 左int - 查表得函数返回值类型为int
  结论: func是一个函数指针,指向的函数有一个类型为int * 的参数且返回值类型为int.

int (* func)(int * p, int (* f)(int* ));
  分析: func - 右) - 左 * - func是指针,更新当前类型为指针 - 左( - 跳出括号 - 右( - func是函数指针,更新当前类型为函数 - 左int - 指向的函数的返回值类型为int
  结论: func是一个函数指针,指向的函数返回值类型为int,有2个参数,一个类型为int * ,另一个类型为函数指针,指向的函数返回值类型为int且有一个int * 类型的参数.

int (* func[5])(int * p);
  分析: func - 右[ - func为数组,有5个元素,更新当前类型为数组 - 右) - 左* - 数组元素为指针,更新当前类型为指针 - 左( - 跳出括号 - 右( - 数组元素为函数指针,更新当前类型为函数 - 左int - 指向的函数返回值类型为int
  结论略~

下面的例子省略方向提示,更新当前类型提示,遇括号转向,跳出括号以及结论(手懒,剁
  int (* (* func)[5])(int * p);
  分析: func - * - func是指针 - [ - 指向有5个元素的数组 - * - 数组元素是指针 - ( - 数组元素是函数指针 - int - 指向的函数返回值类型为int

int (* (* func)(int * p))[5];
  分析: func - * - func是指针 - ( - func是函数指针 - * - 指向的函数返回值类型为指针 - [ - 返回的指针指向有5个元素的数组 - int - 数组元素类型为int

int func(void) [5];
  分析: func - ( - func是函数 - int - 返回值类型为int - [ - 返回值类型为有5个int元素的数组

int func5;
  分析: func - [ - func是数组 - ( - 数组元素是函数 - int - 函数返回值类型为int

int (* (* func)[5][6])[7][8];
  分析: func - * - func是指针 - [ - func指向有5个元素的数组 - [ - 5元素数组里的每个元素是有6个元素的数组 - * - 6元素数组的每个元素为指针 - [ - 指针指向7元素数组 - [ - 7元素数组的每个元素为8元素数组 - int - 8元素数组元素为int

int (* (* (* func)(int * ))[5])(int * );
  分析: func - * - func是指针 - ( - func是函数指针 - * - 函数返回值为指针 - [ - 返回值指向5元素数组 - * - 5元素数组元素为指针 - ( - 指针为函数指针 - int - 函数返回值为int

int (* (* func[7][8][9])(int* ))[5];
  分析: func - [ - func是7元素数组 - [ - 7元素数组元素为8元素数组 - [ - 8元素数组元素为9元素数组 - * - 9元素数组元素为指针 - ( - 为函数指针 - * - 函数返回值为指针 - [ - 指针指向5元素数组 - int - 数组元素为int

int (* (* func)(int * p))[5];
  分析: func - * - func是指针 - ( - 是函数指针 - * - 函数返回值为指针 - [ - 指针指向5元素数组 - int - 数组元素为int

相关文章

网友评论

      本文标题:c语言基础-复杂的函数指针

      本文链接:https://www.haomeiwen.com/subject/ntjwbftx.html