指向函数的指针是一个指针变量,它指向一个函数。一个函数名是一个指针,它指向函数的代码。函数的调用可以通过函数名,也可以通过指向该函数的指针。
指向函数的指针其定义的一般形式为:
类型名 (*指针变量名)();
例如:
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) 即返回一个指向函数的指针,该指针所指函数有两个整型参数。
分享到:
相关推荐
运用指向函数的指针实现一个通用函数调用两个函数,显示两个不同结果。 两个函数的作用是求两个不同的不定积分。
函数指针,就是指向函数的指针。在C++中,函数指针一般是指全局命名空间中的函数指针,类成员函数指针,与函数指针不同的是,类具有类域操作符,在声明类成员函数指针的时候,要指定成员函数返回值类型、类域操作符...
我知道函数指针是指向函数的指针,指针函数还是指一个函数的返回值是一个指针,但下面 的几道题还是感觉很迷惑。各位能否讲的详细点呢? (1)float(**def)[10] def是什么? (2)double*(*gh)[10] gh是什么? (3)double...
面试被问到,指向函数指针 指针函数 数组指针 指针数组 函数指针数组。理理清楚。
<类型说明符>*<指向函数指针名>(<参数表>) 关于给指向函数的指针赋值的格式如下: <指向函数的指针名>=<函数名> 关于在程序中,使用指向函数的指针调用函数的格式如下: (*<指向函数的指针名>)(<实参表>) ...
定义指向函数的指针,这种指针可以被赋值...
指针函数和函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针...
1.普通函数指针指向普通函数 2.普通函数指向非静态成员函数 3. 类外部的 类函数指针 指向普通函数 4. 类外部的 类函数指针 指向成员函数 5. 类内部的 函数指针 指向成员函数 (类似于第2条) 6. 类内部的 函数指针 ...
详解函数指针和指针函数 函数类型 (*指针变量名)(形参列表); “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的...
指针与函数 4-1 函数型指针变量的定义 在C语言程序中,函数定义了之后,...函数指针调用函数时,用(*pf)代替原函数名。 指向函数的指针变量pf,如果作pf±n,pf++,pf--运算,则没有意义。 4-2 函数型指针的赋值 【例8.
一、函数指针的定义 顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * ...
通常来说C++函数指针是指指向函数的指针,而非指向对象的指针。就像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。 定义: char (*fP)(char,int); ...
函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针...
让大家明白指针函数和函数指针的区别 学C++的都哦那个一被这两个东西弄糊涂了
C++学习笔记--函数指针 函数指针 程序运行期间。每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(也称“入口地址”)。...这种指向函数的指针变量,就叫做“函数指针”
指向函数的指针
C++的函数指针(function pointer)是通过指向函数的指针间接调用函数。相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针则比较陌生。本文即对C++普通函数指针与成员函数指针进行实例...
本文给大家分享了AVR-GCC如何调用存储于Flash中的指向函数的指针。
C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该...本文引导你了解成员函数指针的声明,赋值和调用回叫函数。