typedef 返回类型(*Function)(参数表) ——typedef函数指针

//首先看一下函数指针怎么用

#include <iostream>  

using namespace std;
//定义一个函数指针pFUN,它指向一个返回类型为char,有一个整型的参数的函数
char (*pFun)(int);
//定义一个返回类型为char,参数为int的函数
//从指针层面上理解该函数,即函数的函数名实际上是一个指针,
//该指针指向函数在内存中的首地址
char glFun(int a)
{
    return (char)a;
}  

int main()
{
//将函数glFun的地址赋值给变量pFun
    pFun = glFun;
//*pFun”显然是取pFun所指向地址的内容,当然也就是取出了函glFun()的内容,然后给定参数为2。
    (*pFun)(2);
    return 0;
}  

  通过上面的一个小例子,我们知道了函数指针的用法,而typedef可以让函数指针更直观方便

  形式:typedef  返回类型(*新类型)(参数表)

typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
    pFun = glFun;
    (*pFun)(2);
}

  typedef的功能是定义新的类型,第一句即定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。后面就可以像使用int一样使用PTRFUN了。第二行代码使用这个新类型定义了变量pFUN。

时间: 2024-10-13 23:05:42

typedef 返回类型(*Function)(参数表) ——typedef函数指针的相关文章

std::function与std::bind 函数指针

function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时. std::function可以绑定到全局函数/类静态成员函数(类静态成员函数与全局函数没有区别),如果要绑定到类的非静态成员函数,则需要使用std::bind #include <iostream> #include <functional> using namespace std; typedef std::function<voi

[C/C++]在宏的参数中使用函数指针

typedef是C/C++中用于为现有类型创建更有意义的别名的关键字.对于普通类型来说,类型在左,别名在右. typedef int size; 如果函数指针的定义也符合这种样式,那么下面下这样定义才是合理的:    typedef void(*)(int) Type; 但实际上编译器采用的是如下的定义方式(以上的代码编译不过去的): typedef void(*Ptr)(int); 至于原因,我认为(妄加猜测),void(*)(int)确实是一个函数指针,是一种类型,但是它还没有名字,而typ

C/C++用状态转移表联合函数指针数组实现状态机FSM

状态机在project中使用很的频繁,有例如以下常见的三种实现方法: 1. switch-case 实现.适合简单的状态机. 2. 二维状态表state-event实现.逻辑清晰.可是矩阵通常比較稀疏,并且维护麻烦. 3. 用状态转移表stateTransfer Table实现,数组大小等于状体转移边个数,易扩展: 以下用一个样例来进行具体说明,描写叙述的例如以下场景: 描写叙述对象:门 状态:开着.关着.锁着 (这里的关着指关了但未锁的状态) 事件:开门.关门.上锁.解锁 代码实现用枚举来定义

用typedef定义函数指针类型(转)

typedef可以用于定义函数指针类型: [语法]typedef <返回类型> (*<函数类型名>)(参数表)typedef <返回类型> (<类名>::*<函数类型名>)(参数表) [用途]1.可以用来定义该函数类型的函数指针,就不用每次使用函数指针都要写一次函数原型了:2.有了类型名,就可以使用在容器里面,譬如map<int, 类型名>,用于实现灵活的函数调用. [示例] 例1:typedef void (*PF)(int x);

lamda表达式和尾置返回类型

基本语法 基本形式如下: [capture](parameters) mutable ->return-type {body} [capture]:叫做捕获说明符,表示一个  mutable: mutable修饰符.默认情况下,lamda函数总是一个const函数,mutable可以取消其常量性,在使用该修饰符时,参数列表不能省略(即使参数为空). {body}: 函数体,与普通函数的函数体一样,不过除了可以使用参数之外,还可以使用所有捕获的变量. 我们可以这样输出"hello,world

OC6-block-函数指针

目标: 1.通过类中的方法进行排序 2block-函数指针, 3.通过block实现数组的排序 1.自定义类在数组中的排序: (1)在自定义类中声明实现一个方法,方法的返回值是bool类型,意思是是否进行元素的交换 (2)在main中调用这个方法 (3)在数组中,@selecter 是方法选择器,在指定的对象中,寻找指定的方法. 返回值是布尔类型,判断是否交换,必须有且只有一个参数. 参数的类型是自身类型,参数的代表的是它在数组中的下一个元素. //    [arr1 sortedArrayUs

C 中typedef 函数指针的使用

类型定义的语法可以归结为一句话:只要在变量定义前面加上typedef,就成了类型定义.这儿的原本应该是变量的东西,就成为了类型. int integer;     //整型变量int *pointer;   //整型指针变量int array [5]; //整型数组变量int *p_array [5]; //整型指针的数组的变量int (*array_pointer) [5];//整型数组的指针的变量int function (int param);//函数定义,也可将函数名看作函数的变量int

typedef函数指针使用方法

1.简单的函数指针的应用 形式1:返回类型(*函数名)(參数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个指针变量pFun.首先我们依据前面提到的"形式1"认识到它是一个指向某种函数的指针,这样的函数參数是一个int型,返回值是char类型.仅仅有第一句我们还无法使用这个指针,由于我们还未对它进行赋值. 第二行定义了一个函数glFun

函数指针的typedef

1.定义函数的指针类型: 就像自定义数据类型一样,我们也可以先定义一个函数指针类型,然后再用这个类型来申明函数指针变量. 一个自定义数据类型的例子. typedef int* PINT; //为int* 类型定义了一个PINT的别名 int main() { int x; PINT px=&x; //与int * px=&x;是等价的.PINT类型其实就是int * 类型 *px=10; //px就是int*类型的变量 return 0; } 看一下函数指针类型的定义及使用: void M