函数指针定义方法

2024-02-25 07:38
文章标签 函数指针 定义方法

本文主要是介绍函数指针定义方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:https://blog.csdn.net/Believe_FEI/article/details/78681351

首先定义一个函数,方便进行调用

int Examples(int a,int b)  
{  return a+b;  
}

方法一:定义一个函数指针

/****************************************** 定义一个函数指针 返回值为:    int 名称为:      Examples_fp 参数为:      int a 和 int b 
*******************************************/  
int (*Examples_fp)(int a,int b);My_Examples_fp = Examples;//函数指针赋值  My_Examples_fp(1,2);//函数使用实例

方法二:定义一个函数指针类型

/****************************************** 定义一个函数指针类型 返回值为:    int 名称为:      Examples_p 参数为:      int a 和 int b 
*******************************************/  
typedef int (*Examples_p)(int a,int b);Examples_p My_Examples_p;//定义一个实体函数指针  My_Examples_p = Examples;//函数指针赋值  My_Examples_p(1,2);//函数使用实例

方法三:定一个函数类型

/****************************************** 定义一个函数指针类型 返回值为:    int 名称为:      Examples_p 参数为:      int a 和 int b 
*******************************************/  
typedef int (*Examples_p)(int a,int b);Examples_p My_Examples_p;//定义一个实体函数指针  My_Examples_p = Examples;//函数指针赋值  My_Examples_p(1,2);//函数使用实例

 通过typedef构建

//使用typedef给函数指针类型一个别名
//typedef没有定义新的类型,给已经有的类型起一个别名,减少输入
typedef int(*PADD)(int a, int b); //*类型, PADD存储函数地址
typedef void(*MEG)(char s[]);void main()
{PADD padd1 = add; //创建函数指针printf("%d",padd1(11,23));MEG meg1 = msg;meg1("心里的雨倾盆的下");getchar();
}

 我一般是这么做的:

利用typdef 为一个函数指针类型重命名,如:
typedef int (*FUNC_POINT)(void);
上面命名了一个类型FUNC_POINT,该类型是一个函数指针类型(该函数的返回值是int ,参数是void)
那么现在就可以用FUNC_POINT来定义同类型的函数指针了,比如
FUNC_POINT func.
我们可以对它赋值,如:
int test(void) {}
func = test;
也可以对它进行执行操作
func();

下面的实例函数指针 .

#include<stdio.h>//返回值  函数名(形参)
//{
//	函数体
//}
void ssort(int buf[],int ilen)
{printf("函数\n");
}
//通过function来调用指定的排序函数
void function(void (*pfun)(int*,int),int buf[],int ilen)
{pfun(buf,ilen);
}int main()
{
//定义函数指针:void (*pfun)(int*,int)=NULL;pfun=ssort;int buf[10];	
//调用functionfunction(ssort,buf,9);return 0;
}

 

这篇关于函数指针定义方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744813

相关文章

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli

C++函数对象与函数指针不同之处

在C++编程语言中,有很多功能都与C语言相通,比如指针的应用等等。在这里我们介绍的则是一种类似于函数指针的C++函数对象的相关介绍。C++函数对象不是函数指针。但是,在程序代码中,它的调用方式与函数指针一样,后面加个括号就可以了。这是入门级的随笔,说的是函数对象的定义,使用,以及与函数指针,成员函数指针的关系。 C++函数对象实质上是一个实现了operator()--括号操作符--的类。 下面是函

C/C++:函数指针

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言函数指针的概念函数指针的实现C语言实现C++实现 函数指针的应用 引言 我们之前学过各种各样指针,今天我们来讨论一下函数指针 我们先分析C和C++不同定义函数指针的方式,然后进一步探讨函数指针的应用。 函数指针的概念 函数指针是一种特殊的指针,它指向的不是变量地址,而是函数的地址

C语言指针进阶二:(函数指针数组,转移表)

函数指针数组 函数指针数组就是存放函数指针的一个数组,数组里都是函数指针,那么该怎么定义:   int (*parr[10])(); 因为 [] 的优先级高于 * ,所以parr先与 [] 结合说明是一个数组,元素类型是 int(*)() 的函数指针。 函数指针数组的用途:转移表 转移表的基础列子:实现计算器 #include<stdio.h>//函数指针数组创建的简易计算器,又称转

一个函数指针的注册单例类

class RegisterClass {public:typedef string(*Creator) (const string);typedef map <string, Creator> CreatorResgister;static CreatorResgister& Registry() {static CreatorResgister* g_ = new CreatorResgis

函数指针变量与指针型函数区别

函数指针变量定义的一般形式: 类型说明符 (*指针变量名)() 其中,“类型说明符”表示被指函数的返回值类型。“(*指针变量名)”表示*后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。 例如:int (*pf)();表示pf是一个指向函数入口的指针变量,该函数的返回值是整形。   指针型函数的一般形式: 类型说明符 *函数名(形参列表){………………} 其中函数

指针函数、函数指针与递归函数

一.指针函数 1.定义         指针函数是一个函数,其返回值是一个指针         例如:                 void *function()                 int *function()                 float *function() 2.指针函数的返回值         指针函数的返回值要求是 全局变量的地址/st

关于调用子函数给主函数指针分配内…

典型的错误例子如下 在这个主函数的指针给子函数传递一个指针,而在子函数中形参有开辟了一块内存,此子函数的指针的内存里存储的地址与主函数是同一地址,即主函数的指 针和子函数形参的指针都指向同一块内存的地址,但是在子函数里,为子函数的指针申请了一块空间,并不影响主函数的指针。因为子函数的指针又指向了别的内 存。要想分配成功就得用下面两个例子。一个是在子函数的形参中第一指向指针的指针即二级指针,

C语言头文件组织与包含原则(函数指针和结构体的前项声明)

http://jingpin.jikexueyuan.com/article/38309.html 在实际编程中,常常因头文件包含不当而引发编译时报告符号未定义的错误或重复定义的警告。要消除符号未定义的编译错误,只需在引用符号(变量、函数、数据类型及宏等)前确保它已被声明或定义[4]。要消除重复定义的警告,则需合理设计头文件包含顺序和层次  头文件的

详解C/C++函数指针声明

转自: http://www.cnblogs.com/iuices/archive/2011/11/21/2257710.html  要理解一个C程序,仅仅理解组成该程序的符号是不够的。程序员还必须理解这些符号是如何组合成声明、表达式、语句和程序的。      我们先来看看下面的一个语句: 1 ( *( void (*)())0)();