指向函数的指针是一个指针变量,它指向一个函数。一个函数名是一个指针,它指向函数的代码。函数的调用可以通过函数名,也可以通过指向该函数的指针。
指向函数的指针其定义的一般形式为:
类型名 (*指针变量名)();
例如:
int (*p)(int i, int j);
p是一个指针,它指向一个函数,该函数有两个整型参数,返回类型为int .
注:
int *p(int i, int j);
这是一个函数声明,返回类型为int型指针。
1、函数指针的简单使用:
//函数指针的使用
#include <stdio.h>
#define GET_MAX 0
#define GET_MIN 1
int get_max(int i, int j)
{
return i > j ? i : j;
}
int get_min(int i, int j)
{
return i < j ? i : j;
}
int compare(int i, int j, int flag)
{
int result;
int (*p)(int, int); //函数指针
if (flag == GET_MAX)
{
p = get_max;
}
else
{
p = get_min;
}
result = p(i, j);
return result;
}
int main(void)
{
int i = 5, j = 10, result;
result = compare(i, j, GET_MAX);
printf("The MAX is %d", result);
return 0;
}
注意:
(1)不能对指向函数的指针作任何运算,如:p++ , p--, 等。
(2)指向函数的指针能通过同类型的函数(参数相同,返回值相同)名、函数指针、NULL来初始化或赋值。NULL表示该指针不指向任何函数。
2、函数指针作形参
#include <stdio.h>
int get_big(int i, int j)
{
return i > j ? i : j;
}
int get_max(int i, int j, int k, int (*p)(int, int)) //函数指针作形参
{
int ret;
ret = p(i, j);
ret = p(ret,k);
return ret;
}
int main(void)
{
int i = 5;
int j = 10;
int k = 15;
int ret;
ret = get_max(i, j, k, get_big);
printf("The MAX is %d", ret);
return 0;
}
3、返回函数指针的函数
#include <stdio.h>
int get_big(int i, int j)
{
return i > j ? i : j;
}
int (*get_func(int a))(int , int) //返回函数指针的函数
{
printf("The number is %d", a);
return get_big;
}
int main(void)
{
int i = 5, j = 10, max;
int (*p)(int , int);
p = get_func(100);
max = p(i, j);
printf("MAX is %d", max);
return 0;
}
get_func(int a)是有一个整型参数的函数。它的返回值为 int(*)(int , int) 即返回一个指向函数的指针,该指针所指函数有两个整型参数。
分享到:
相关推荐
压缩包中的`指向函数的指针.cpp`文件应该包含了上述所有代码的实现,而`指向函数的指针.exe`则是编译后的可执行程序,运行这个程序将演示如何通过函数指针调用和比较两个积分函数。 总结来说,这个示例展示了C++中...
在C++编程中,函数指针是一个非常重要的概念,它允许我们存储函数的地址并像普通指针一样对其进行操作。函数指针可以被用来作为参数传递给其他函数,或者存储在一个变量中,以便稍后调用。这为程序设计提供了很大的...
### C/C++ 函数指针的意义与应用 在C/C++编程中,函数指针是一种高级特性,它允许程序员处理函数的方式如同处理变量一般灵活。理解函数指针的意义及其用法,对于提升代码的可扩展性和灵活性至关重要。 #### 1. ...
在C++中,指向函数的指针是一种强大的工具,它允许我们存储函数的地址并以指针的形式调用它们。这种技术在某些情况下非常有用,比如动态选择执行哪个函数、作为参数传递给其他函数或者作为函数的返回值。下面我们将...
本文详细介绍了函数指针的三种主要用法:指向普通函数的指针、函数指针数组以及指向函数指针数组的指针。同时,还简单提及了在C++中函数指针与类成员的关联。 1. 指向普通函数的指针: 在C++中,函数指针的定义...
本文详细介绍了函数指针在C++中的应用和使用,包括基本概念、函数指针数组以及指向函数指针数组的指针,并简要提及了函数指针与类成员的关联。 1. **基本的函数指针** 在C++中,函数可以被视为一等公民,它们可以...
在C语言中,指针和函数是两个非常重要的概念,而将它们结合在一起,就产生了指针函数和函数指针变量。这两个概念是C语言高级特性的体现,它们在编程中有着广泛的应用,如回调函数、动态加载库、内存管理等。 首先,...
函数指针是指向函数的指针变量,可以指向全局函数或类成员函数。函数指针的类型是指针类型,例如`typedef void (*fp)(int);`,其中`fp`是函数指针的名称,`(*fp)`表示函数指针指向的函数,`(int)`表示函数的参数类型...
函数指针可以被用来存储函数的地址,而指向函数指针的指针则可以用来动态地改变程序的行为。例如,在提供的代码示例中,`p`就是一个函数指针,它指向`add`函数,可以通过改变`p`指向的函数来改变程序的行为。 ### 3...
函数指针是指向函数的指针,包含了函数的地址,可以通过它来调用函数。其声明格式为:类型说明符 (*函数名)(参数)。例如: ```c void (*fptr)(); ``` 函数指针的声明笔削和它指向函数的声明保持一致。如果没有圆括号...
2. **类型**:函数指针是一种特殊的指针类型,它指向函数而不是数据。指针函数是一个普通的函数,只是返回值是另一个类型的指针。 3. **操作**:函数指针可以被传递给其他函数作为参数,也可以作为其他函数的返回值...
在这个例子中,`pFun`是一个函数指针类型,它可以指向任何接受两个整型参数并返回一个整型值的函数。接下来,可以通过将函数的地址赋值给该函数指针来使用它: ```cpp pFun fun = Max; int result = (*fun)(3, 4); ...
函数指针的定义包含了函数的返回类型和参数列表,以确保与所指向的函数匹配。 1. **函数指针定义**:函数指针的声明语法是`函数类型 (*指针变量名)(形参列表)`。这里的`函数类型`指函数的返回类型,`*指针变量名`是...
例如,如果你有一个接受两个整数并返回整数的函数`add(int a, int b)`,你可以定义一个指向它的函数指针如下: ```cpp int (*add_ptr)(int, int); ``` 然后你可以通过`= &add`将函数地址赋值给这个指针,并通过`*...
函数指针是指向函数的指针,它可以用来存放函数的地址,并且可以通过函数指针来调用函数。函数指针的定义方式与数组指针类似,但函数指针的类型是指向函数的类型。 2. 回忆函数 回忆一下我们之前说的函数,写一个...
### 彻底理解指针,指针数组和数组指针,指针函数和函数指针 #### 一、基础知识 在计算机编程中,指针是一个非常重要的概念,尤其是在C/C++这样的语言中更是如此。简单来说,指针是一种变量,但它存储的不是普通的...
**函数指针**指的是指向函数的指针变量,它存储的是函数的入口地址。当我们想要在运行时动态地选择调用哪个函数时,函数指针就显得非常有用。例如,我们可以将函数指针作为参数传递给其他函数,这样可以在运行时决定...
<类型说明符>*<指向函数指针名>(<参数表>) 关于给指向函数的指针赋值的格式如下: <指向函数的指针名>=<函数名> 关于在程序中,使用指向函数的指针调用函数的格式如下: (*<指向函数的指针名>)(<实参表>) ...
### 函数指针和指针函数的区分及应用 #### 函数指针的理解与使用 **函数指针**是一种特殊的指针类型,它可以用来存储函数的地址,进而通过该指针来调用函数。理解函数指针的关键在于认识到函数也是一种具有特定...