【C语言】详解函数指针

淡淡的烟草味﹌ 2022-05-21 13:13 400阅读 0赞

一、函数指针的概念

  1. 函数指针是指针变量。首先,它是一个指针,该指针指向函数。我们需要明白的是每一个函数在内存中都有它的一个地址,换句话就是说函数都具有一个入口地址,而这个入口地址就可以用一个函数指针来指向。
  2. 函数指针的既可以用来调用函数,也可以作为函数的参数来传递。

二、函数指针的定义

2.1普通的定义方法如下

  1. 下面的例子说明了定义一个函数指针的普通的方法,分析:pf先与\*结合,说明它是一个指针,后面紧跟(int, int)是参数列表, 最前面的int说明pf指向的函数的返回值是int类型,故pf是一个指向int (int, int)类型的函数的指针。
  2. int (*pf)(int, int); //pf可指向int(int,int)类型的函数

2.2使用typedef定义

  1. 下面就是使用typedef定义的方法定义的函数指针类型,这个时候的pf并不是具体的指针,可以用它来定义具体的指针。
  2. typedef int(*PF)(int, int);
  3. PF pf;

三、函数指针的使用

3.1函数指针常见的使用

  1. 注意:pf的函数指针类型(下面举例中的类型为int (int, int))与对应指向的函数的类型(Add函数的类型为int(int, int))完全匹配。
  2. int Add(int x, int y);
  3. int (*pf)(int, int); //pf可指向int(int,int)类型的函数
  4. pf = Add; //Add本身就是函数首地址,也可以用 pf = &Add 的形式赋值

3.2函数指针作为函数的参数

  1. 我们知道指针可以作为函数的参数,同样的,函数指针本质也是指针,所以也可以作为函数的参数。
  2. int f(int value, int (*pf)(int, int));

3.3函数指针作为返回参数

  1. 函数指针作为返回参数的声明看着很复杂,其实想要看懂并不难。
  2. 以下面的声明为例,f后面紧跟着形参列表,说明f是一个函数,再跟\*结合,说明返回的是一个指针,指针本身的参数列表是(int, int),说明该指针指向一个函数,函数的返回值为int
  3. 以上总结为一句话:f是一个函数,它的参数是void,返回一个指向int (int, int)类型的指针。
  4. int (*f(void))(int, int);

发表评论

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

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

相关阅读

    相关 C语言-函数指针

    函数指针 函数指针是指向函数的指针变量。 函数指针本身首先应该是指针变量,只不过该指针变量指向函数。 > C在编译的时,每一个函数都有一个入口地址,该入口地址就是函

    相关 C语言指针详解

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,

    相关 C语言指针详解

    一、指针的概念 在计算机中,所有数据都是放在内存中的,为了能够正确地访问到这写内存单元,在C语言中为了每个内存单元编上号。通过这些唯一的编号,就可以找到所需的内存单元,那么

    相关 C语言指针详解

    这是一篇非常详细并且写的认真的C语言指针方面的文章 前言:复杂类型说明     要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个