【C语言】函数指针数组和指向函数指针数组的指针

超、凢脫俗 2022-05-21 13:14 399阅读 0赞

一、函数指针数组

1.1函数指针数组的声明

  1. 函数指针数组的声明如下,所谓函数指针数组就是在之前的函数指针的基础上增加了\[\],由于\[\]的优先级高于\*,故 pf先与\[\]结合,说明它是一个数组,再与\*结合说明数组中的元素的类型是指针,再看后面的参数列表,说明每一个指针都指向一个函数的入口地址,并且指向的函数的返回类型为int
  2. int (*pf[])(int, int);

1.2函数指针的使用

  1. 以下代码展示了函数指针数组的一个简单的应用。
  2. #include <stdio.h>
  3. int Add(int x, int y) {
  4. return x + y;
  5. }
  6. int Sub(int x, int y) {
  7. return x - y;
  8. }
  9. int main() {
  10. int a = 10;
  11. int b = 20;
  12. //定义一个有2个指针的数组,指针指向一个函数,该函数有两个整型参数并返回一个整型数
  13. int(*p[2])(int, int);
  14. p[0] = Add; //函数指针数组的第一个元素指向Add函数
  15. p[1] = Sub;
  16. printf("%d, %d\n", p[0](a, b), p[1](a, b));
  17. system("pause");
  18. return 0;
  19. }

二、指向函数指针数组的指针

  1. 在此,仅作介绍,它也叫函数指针数组的指针。下面的定义怎么理解呢?首先,p\*结合说明是一个指针,之后与\[\]结合,说明是一个数组指针,再与\*结合说明用一个指针指向了数组指针,之后又指向了一个函数的入口地址,该函数有两个int类型参数,返回值是int
  2. int (*(*p)[])(int, int);
  3. 总而言之,指向函数指针数组的指针就是在函数指针数组的基础上,再加一个\*表示一个指针去指向它。当然,既然有函数指针数组的指针,则必然还有函数指针数组的指针数组,只不过一般的编程用到的情况很少,如果读者有兴趣的话,可以去研究一下。

发表评论

表情:
评论列表 (有 0 条评论,399人围观)

还没有评论,来说两句吧...

相关阅读