C语言——复杂指针的读写

1、函数指针

  int (*p)(int, int);

  “p”是一个返回值为int类型,参数为 (int, int)类型的函数指针

  通常使用typedef来定义它的类型:typedef int (*p)(int, int);

  此时p是一个类型,不是一个变量。

 

2、函数指针数组

  int (*p[5])(int, int);

  “p”是一个具有5个元素的数组,数组元素的类型是“返回值为int类型,参数为 (int, int)类型的函数指针”

  赋值方法:

  int (*p[5])(int, int) = {func1, func2, func3, func4, func5};

  或

  p[0] = func1;

  p[1] = func2;

  ...

  调用的时候就当函数名调用就行,函数名本身就是函数指针常量。

 

 

 1     int* (*(*(*abc)())[6])();
 2     /*
 3     * 1、(*abc)()——函数指针
 4     * 2、(*(某1))[6]——某的数组的指针
 5     * 3、int* (*(某2))()——返回值为int*类型的某的函数指针
 6     * 组合方式:12321
 7     * 组合:(以(指向((返回值为int*类型的(函数指针))数组)的指针)为返回值的)函数指针
 8     * 解析:首先(*abc)()是一个函数指针,函数指针的返回值是什么呢?
 9     *        返回值是一个指针,指针指向什么呢?
10     *        指针指向一个数组,数组是什么类型的呢?
11     *        数组是函数指针类型的,函数指针的返回值是什么呢?
12     *        返回值是int*类型。
13     **/

 

posted on 2023-04-04 21:51  _燃灯续昼  阅读(14)  评论(0编辑  收藏  举报

导航