函数指针
在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。
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代表同一函数。
由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我们就讨论如何用函数指针调用函数,它应执行下面三步:
- 说明函数指针变量。 int (*f)(int x);
- 对函数指针变量赋值。 f=func;
- 调用函数。 (*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语言中,函数指针和指针函数是两个重要的概念,它们经常出现在较为复杂的程序设计中,尤其在回调函数、动态绑定等场景中发挥着重要作用。 **函数指针**指的是指向函数的指针变量,它存储的是函数的入口地址。当...
### 函数指针和指针函数的区分及应用 #### 函数指针的理解与使用 **函数指针**是一种特殊的指针类型,它可以用来存储函数的地址,进而通过该指针来调用函数。理解函数指针的关键在于认识到函数也是一种具有特定...
"函数指针和指针函数" 函数指针是 C 语言中的一种特殊的指针,它可以指向函数的地址,而不是变量的地址。函数指针的定义格式为:`返回类型 (*指针变量名)(参数列表)`,其中返回类型是函数的返回类型,指针变量名是...
### 函数指针和指针函数的说明 #### 引言 C语言作为一种广泛应用的编程语言,其灵活性和强大功能很大程度上得益于指针的应用。指针不仅能够直接操作内存地址,还能通过指针来实现对函数的操作,这包括函数指针和...
在C++编程语言中,函数指针和指针函数是两个不同的概念,它们在定义、使用和表达方式上有显著的差异。理解这些差异对于编写高效和灵活的代码至关重要。 首先,我们来详细解释一下这两个概念: 1. **指针函数**: ...
C语言中的函数指针和指针函数是两个关键概念,它们允许我们以更灵活的方式处理函数,实现回调机制、动态绑定以及在运行时决定调用哪个函数等功能。 1. **函数指针**: - 函数指针是一种特殊的指针变量,它存储的是...
在C语言中,函数指针和指针函数是高级特性,它们在软件开发中有着广泛的应用,尤其是在系统编程和库函数的设计中。本篇再学习的内容主要围绕函数指针和指针函数的概念、定义、赋值以及如何通过它们来调用函数。 1. ...
在编程语言中,函数指针和指针函数是两种不同的概念,它们在C语言和C++等编程语言中尤其常见。这些概念对于理解和编写高级的、动态的代码至关重要。 首先,我们来澄清这两个术语的区别: 1. **函数指针**:函数...
在编程领域,函数指针和指针函数...总之,函数指针和指针函数都是C语言中非常重要的特性,它们允许我们以灵活的方式处理函数和数据,增强了程序的可扩展性和模块化。正确理解和使用这些概念对于提升编程能力至关重要。
在C语言中,函数指针和指针函数是高级特性,它们允许我们以更灵活的方式操作函数和数据。本文将详细解释这两个概念及其应用。 **函数指针** 函数指针是一种特殊的指针变量,它可以存储函数的地址,使得我们可以...
在C语言中,函数指针和指针函数是高级特性,它们允许我们以更灵活的方式处理函数和数据。本文将详细解释这两个概念以及如何在实际编程中应用它们。 首先,让我们了解一下函数指针。函数在内存中占据一定的空间,就...
在编程世界中,函数指针和指针函数是C/C++等语言中非常重要的概念,它们为程序提供了灵活和高效的方式处理数据和控制流程。在这个“函数指针与指针函数应用程序”中,我们将深入探讨这两个核心主题。 首先,我们要...
c语言函数指针和指针函数[收集].pdf
在C语言中,指针和函数是两个非常重要的概念,而将它们结合在一起,就产生了指针函数和函数指针变量。这两个概念是C语言高级特性的体现,它们在编程中有着广泛的应用,如回调函数、动态加载库、内存管理等。 首先,...
函数指针和函数对象 函数指针(全局函数/类成员函数)和函数对象是C++语言中两个重要的概念,经常被混淆和误解。本文将详细介绍函数指针和函数对象的定义、类型、使用方法和区别。 一、函数指针 函数指针是指向...
### 函数指针与指针函数详解 在深入探讨函数指针与指针函数之前,我们首先需要理解...通过理解和运用函数指针与指针函数,开发者可以实现诸如回调函数、动态加载库、策略模式等功能,从而提升代码的可扩展性和复用性。