函数指针的定义是什么

2023-07-06   


顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。看例子:
   A),char * (*fun1)(char * p1,char * p2);
   B),char * *fun2(char * p1,char * p2);
   C),char * fun3(char * p1,char * p2);
   数组参数等效的指针参数
   数组的数组:char a[3][4] 数组的指针:char (*p)[10]
   指针数组: char *a[5] 指针的指针:char **p
   看看上面三个表达式分别是什么意思?
   C):这很容易,fun3 是函数名,p1,p2 是参数,其类型为char *型,函数的返回值为char *类型。
   B):也很简单,与C)表达式相比,唯一不同的就是函数的返回值类型为char**,是个二级指针。
   A):fun1 是函数名吗?回忆一下前面讲解数组指针时的情形。我们说数组指针这么定义或许更清晰:
   int (*)[10] p;
   再看看A)表达式与这里何其相似!明白了吧。这里fun1 不是什么函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针。同样,我们把这个表达式改写一下:char * (*)(char * p1,char * p2) fun1; 这样子是不是好看一些呢?只可惜编译器不这么想


相关内容:

  1. 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
  2. NULL是什么,它是怎么定义的
  3. 空指针到底是什么
  4. 如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
  5. 怎样在程序里获得一个空指针
  6. 如何理解委托