`
cm14k
  • 浏览: 31428 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

指向函数的指针

J# 
阅读更多

指向函数的指针是一个指针变量,它指向一个函数。一个函数名是一个指针,它指向函数的代码。函数的调用可以通过函数名,也可以通过指向该函数的指针。

指向函数的指针其定义的一般形式为:

类型名  (*指针变量名)();

例如:

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++ 函数指针的意义与应用 在C/C++编程中,函数指针是一种高级特性,它允许程序员处理函数的方式如同处理变量一般灵活。理解函数指针的意义及其用法,对于提升代码的可扩展性和灵活性至关重要。 #### 1. ...

    c++中指向函数的指针

    在C++中,指向函数的指针是一种强大的工具,它允许我们存储函数的地址并以指针的形式调用它们。这种技术在某些情况下非常有用,比如动态选择执行哪个函数、作为参数传递给其他函数或者作为函数的返回值。下面我们将...

    函数指针详解 word文档讲解详细 很细

    本文详细介绍了函数指针的三种主要用法:指向普通函数的指针、函数指针数组以及指向函数指针数组的指针。同时,还简单提及了在C++中函数指针与类成员的关联。 1. 指向普通函数的指针: 在C++中,函数指针的定义...

    函数指针详解[文].pdf

    本文详细介绍了函数指针在C++中的应用和使用,包括基本概念、函数指针数组以及指向函数指针数组的指针,并简要提及了函数指针与类成员的关联。 1. **基本的函数指针** 在C++中,函数可以被视为一等公民,它们可以...

    指针函数和函数指针变量

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

    函数指针和函数对象

    函数指针是指向函数的指针变量,可以指向全局函数或类成员函数。函数指针的类型是指针类型,例如`typedef void (*fp)(int);`,其中`fp`是函数指针的名称,`(*fp)`表示函数指针指向的函数,`(int)`表示函数的参数类型...

    指向指针的指针.docx

    函数指针可以被用来存储函数的地址,而指向函数指针的指针则可以用来动态地改变程序的行为。例如,在提供的代码示例中,`p`就是一个函数指针,它指向`add`函数,可以通过改变`p`指向的函数来改变程序的行为。 ### 3...

    C语言指针函数和函数指针详细介绍.

    函数指针是指向函数的指针,包含了函数的地址,可以通过它来调用函数。其声明格式为:类型说明符 (*函数名)(参数)。例如: ```c void (*fptr)(); ``` 函数指针的声明笔削和它指向函数的声明保持一致。如果没有圆括号...

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

    2. **类型**:函数指针是一种特殊的指针类型,它指向函数而不是数据。指针函数是一个普通的函数,只是返回值是另一个类型的指针。 3. **操作**:函数指针可以被传递给其他函数作为参数,也可以作为其他函数的返回值...

    一般函数指针和类的成员函数指针

    在这个例子中,`pFun`是一个函数指针类型,它可以指向任何接受两个整型参数并返回一个整型值的函数。接下来,可以通过将函数的地址赋值给该函数指针来使用它: ```cpp pFun fun = Max; int result = (*fun)(3, 4); ...

    详解函数指针和指针函数

    函数指针的定义包含了函数的返回类型和参数列表,以确保与所指向的函数匹配。 1. **函数指针定义**:函数指针的声明语法是`函数类型 (*指针变量名)(形参列表)`。这里的`函数类型`指函数的返回类型,`*指针变量名`是...

    C++ 一般(普通)函数指针、类成员函数指针,用法区别,以及强制转换

    例如,如果你有一个接受两个整数并返回整数的函数`add(int a, int b)`,你可以定义一个指向它的函数指针如下: ```cpp int (*add_ptr)(int, int); ``` 然后你可以通过`= &add`将函数地址赋值给这个指针,并通过`*...

    指针进阶之函数指针和函数指针数组

    函数指针是指向函数的指针,它可以用来存放函数的地址,并且可以通过函数指针来调用函数。函数指针的定义方式与数组指针类似,但函数指针的类型是指向函数的类型。 2. 回忆函数 回忆一下我们之前说的函数,写一个...

    彻底理解指针,指针数组和数组指针,指针函数和函数指针

    ### 彻底理解指针,指针数组和数组指针,指针函数和函数指针 #### 一、基础知识 在计算机编程中,指针是一个非常重要的概念,尤其是在C/C++这样的语言中更是如此。简单来说,指针是一种变量,但它存储的不是普通的...

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

    **函数指针**指的是指向函数的指针变量,它存储的是函数的入口地址。当我们想要在运行时动态地选择调用哪个函数时,函数指针就显得非常有用。例如,我们可以将函数指针作为参数传递给其他函数,这样可以在运行时决定...

    C++对象和指针的引用

    &lt;类型说明符&gt;*&lt;指向函数指针名&gt;(&lt;参数表&gt;) 关于给指向函数的指针赋值的格式如下: &lt;指向函数的指针名&gt;=&lt;函数名&gt; 关于在程序中,使用指向函数的指针调用函数的格式如下: (*&lt;指向函数的指针名&gt;)(&lt;实参表&gt;) ...

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

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

Global site tag (gtag.js) - Google Analytics