如何定义一个函数指针?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何定义一个函数指针?相关的知识,希望对你有一定的参考价值。

针对你的: void kk(void) cout < < "kk " < <endl; 或其相同原型的函数作如下声明: typedef void(*FuncKk)(void);//FuncKk是这一原型函数的指针类型; 这样你可以在你的程序中如下: int main() FuncKk _pfunc = kk;//定义一个FuncKk型的函数指针并初始化; _pfunc();//用该函数指针调用kk函数 _PAUSE; return 0; 上述程序行为良好,体现出标准的函数指针使用方法,即使用typedef声明函数指针的类型而不是函数指针变量,好处是一处声明,到处都可以使用而避免多次使用函数指针冗长的语法,还有typedef固有的灵活性。 参考技术A C语言的方式:
<返回值数据类型> * 函数名(形参列表)


函数功能语句;
return &返回值;

c函数指针和指针函数如何使用何定义;如何调用使用

#include <stdio.h>

int * sum(int x); //声明一个 指针函数 返回类型位一个指针变量 可以通过*p来获取值
int (*pfun)(int,int);//声明一个 函数指针
int max(int x,int y);//声明全局函数

int main(void)
{
	//int name = 400;
	int *re = sum(100);
	//sleep(1);
	printf("%d %p\n",*re,re);
	//sleep(2);
	printf("%d %p\n",*re,re);//严重有问题 居然值不一样了
	
	//max = 0x12345;//错误 函数名和数组名的地址不允许修改
	pfun = max;//初始化函数指针 指向max函数的函数指针变量
	printf("sum的入口地址:%p\n",sum);
	printf("max的入口地址:%p pfun的地址:%p max的大小:%d\n",max, pfun, pfun(10,20));//函数名就是函数的入口也是地址
	
	
	
	return 0;
}
int max(int xx, int yy){
	return xx>yy?xx:yy;
}
int * sum(int x){
	int static sum =0;//static 修身的变量在数据段;不会被函数栈回收
	int *p = ∑//最好是定义一个指针变量
	int i;
	for(i=1;i<=x;i++){
		sum +=i;
	}
	return p;
	//return ∑//会警告 返回的是局部变量的地址
}

  

函数名和数组名不允许修改其地址;因为是常量;

函数指针:返回的是函数的类型数据

指针函数:返回的是一个指针地址

函数名和数组名一样都是一个指针;即是地址

以上是关于如何定义一个函数指针?的主要内容,如果未能解决你的问题,请参考以下文章

c函数指针和指针函数如何使用何定义;如何调用使用

C++指针问题,请问如何定义一个返回值为结构体指针数组的函数?

如何在struct中正确定义一个函数指针,它以struct为指针?

C语言函数指针,敲黑白,讲重点,如何定义函数指针?

Delphi 中 如何将函数的地址赋值给指针变量?

调用一个动态库中的函数,这个函数有一个参数是结构体指针,我如何使用这个指针?