`
eriol
  • 浏览: 407792 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

函数指针和指针函数

    博客分类:
  • C++
阅读更多

函数指针

 

在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。

 

 

1. 函数指针定义

 

函数类型 (*指针变量名) (形参列表);

    “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。

 

例如:

 

int (*f)(int x);

double (*ptr)(double x);
 

    在定义函数指针时请注意:

  • 函数指针和它指向的函数的参数个数和类型都应该是—致的;
  • 函数指针的类型和函数的返回值类型也必须是一致的。

 

2. 函数指针的赋值

 

函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。

例如:

 

int func(int x);   /* 声明一个函数 */

int (*f) (int x);   /* 声明一个函数指针 */

f=func;              /* 将func函数的首地址赋给指针f */

 

    赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

 

 

3. 通过函数指针调用函数

 

函数指针是通过函数名及有关参数进行调用的。

 

与其他指针变量相类似,如果指针变量pi是指向某整型变量i的指针,则*p等于它所指的变量i;同样地,*f是指向函数func(x)的指针,则*f就代表它所指向的函数func。所以在执行了f=func;之后,(*f)和func代表同一函数。

 

由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我们就讨论如何用函数指针调用函数,它应执行下面三步:

  1. 说明函数指针变量。                      int (*f)(int x);
  2. 对函数指针变量赋值。                   f=func;
  3. 调用函数。                                  (*f)(x);

 

4. 使用typedef使得函数指针更直观更方便

 

typedef 返回类型(*新类型)(参数表)
 

    例如:

 

typedef char(*PTRFUN)(int);

PTRFUN pFun;
char glFun(int a) {return;}

void main()
{
    pFun = glFun;
    (*pFun)(2);
}

 

   typedef的功能是定义新的类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。第二行的代码便使用这个新类型定义了变量pFun,此时就可以使用这个变量了。

 

 

 

指针函数

 

一个函数不仅可以带回一个整型数据的值,还可以返回指针类型的数据,使其指向某个地址单元。指针函数就是返回指针的函数。

 

返回指针的函数,一般定义格式为:

 

 类型标识符 *函数名(参数表)

 

例如:

 

int *f(x, y);
 

其中x,y是形式参数,f是函数名,调用后返回一个指向整型数据的地址指针。f(x,y)是函数,其返回值是指针。

 

 

总结:

 

函数指针是一个指向函数的指针,而指针函数只是说明它是一个返回值为指针的函数。

分享到:
评论

相关推荐

    函数指针和指针函数的区别

    在C/C++编程语言中,函数指针和指针函数是两个不同的概念,虽然它们都涉及到指针和函数,但其用法和含义各有特点。理解这两者的差异对于编写高效、灵活的代码至关重要。 首先,我们来解释"函数指针"。函数指针是一...

    详解函数指针和指针函数

    总之,函数指针和指针函数是C语言中高级的编程工具,它们增加了代码的灵活性和可扩展性,常用于回调函数、动态调度、数据结构(如链表)的实现等场景。理解和熟练掌握这些概念对于深入理解C语言及其在复杂系统中的...

    函数指针和指针函数的理解

    在C语言中,函数指针和指针函数是两个重要的概念,它们经常出现在较为复杂的程序设计中,尤其在回调函数、动态绑定等场景中发挥着重要作用。 **函数指针**指的是指向函数的指针变量,它存储的是函数的入口地址。当...

    函数指针和指针函数,const的用法,指针常量,常量指针的用法

    ### 函数指针和指针函数的区分及应用 #### 函数指针的理解与使用 **函数指针**是一种特殊的指针类型,它可以用来存储函数的地址,进而通过该指针来调用函数。理解函数指针的关键在于认识到函数也是一种具有特定...

    c语言函数指针和指针函数.pdf

    "函数指针和指针函数" 函数指针是 C 语言中的一种特殊的指针,它可以指向函数的地址,而不是变量的地址。函数指针的定义格式为:`返回类型 (*指针变量名)(参数列表)`,其中返回类型是函数的返回类型,指针变量名是...

    函数指针和指针函数的说明

    ### 函数指针和指针函数的说明 #### 引言 C语言作为一种广泛应用的编程语言,其灵活性和强大功能很大程度上得益于指针的应用。指针不仅能够直接操作内存地址,还能通过指针来实现对函数的操作,这包括函数指针和...

    55_函数指针和指针函数的区别1

    在C++编程语言中,函数指针和指针函数是两个不同的概念,它们在定义、使用和表达方式上有显著的差异。理解这些差异对于编写高效和灵活的代码至关重要。 首先,我们来详细解释一下这两个概念: 1. **指针函数**: ...

    学习c语言函数指针和指针函数.pdf

    C语言中的函数指针和指针函数是两个关键概念,它们允许我们以更灵活的方式处理函数,实现回调机制、动态绑定以及在运行时决定调用哪个函数等功能。 1. **函数指针**: - 函数指针是一种特殊的指针变量,它存储的是...

    C语言再学习之函数指针和指针函数[文].pdf

    在C语言中,函数指针和指针函数是高级特性,它们在软件开发中有着广泛的应用,尤其是在系统编程和库函数的设计中。本篇再学习的内容主要围绕函数指针和指针函数的概念、定义、赋值以及如何通过它们来调用函数。 1. ...

    函数指针和指针函数[借鉴].pdf

    在编程语言中,函数指针和指针函数是两种不同的概念,它们在C语言和C++等编程语言中尤其常见。这些概念对于理解和编写高级的、动态的代码至关重要。 首先,我们来澄清这两个术语的区别: 1. **函数指针**:函数...

    函数指针和指针函数区别[参考].pdf

    在编程领域,函数指针和指针函数...总之,函数指针和指针函数都是C语言中非常重要的特性,它们允许我们以灵活的方式处理函数和数据,增强了程序的可扩展性和模块化。正确理解和使用这些概念对于提升编程能力至关重要。

    C语言再学习之函数指针和指针函数.pdf

    在C语言中,函数指针和指针函数是高级特性,它们允许我们以更灵活的方式操作函数和数据。本文将详细解释这两个概念及其应用。 **函数指针** 函数指针是一种特殊的指针变量,它可以存储函数的地址,使得我们可以...

    学习C语言再学习之函数指针和指针函数.pdf

    在C语言中,函数指针和指针函数是高级特性,它们允许我们以更灵活的方式处理函数和数据。本文将详细解释这两个概念以及如何在实际编程中应用它们。 首先,让我们了解一下函数指针。函数在内存中占据一定的空间,就...

    函数指针与指针函数应用程序

    在编程世界中,函数指针和指针函数是C/C++等语言中非常重要的概念,它们为程序提供了灵活和高效的方式处理数据和控制流程。在这个“函数指针与指针函数应用程序”中,我们将深入探讨这两个核心主题。 首先,我们要...

    c语言函数指针和指针函数[收集].pdf

    c语言函数指针和指针函数[收集].pdf

    指针函数和函数指针变量

    在C语言中,指针和函数是两个非常重要的概念,而将它们结合在一起,就产生了指针函数和函数指针变量。这两个概念是C语言高级特性的体现,它们在编程中有着广泛的应用,如回调函数、动态加载库、内存管理等。 首先,...

    函数指针和函数对象

    函数指针和函数对象 函数指针(全局函数/类成员函数)和函数对象是C++语言中两个重要的概念,经常被混淆和误解。本文将详细介绍函数指针和函数对象的定义、类型、使用方法和区别。 一、函数指针 函数指针是指向...

    函数指针与指针函数

    ### 函数指针与指针函数详解 在深入探讨函数指针与指针函数之前,我们首先需要理解...通过理解和运用函数指针与指针函数,开发者可以实现诸如回调函数、动态加载库、策略模式等功能,从而提升代码的可扩展性和复用性。

Global site tag (gtag.js) - Google Analytics