C++函数指针

函数指针:指向函数首地址的指针变量

定义函数指针: 用(*标识符)替换函数名,剩下照抄

如 int sum(int a,int b) ---> int (*pr)(int a,int b) //形参可以不写 int (pr*)(int,int)

通过函数指针调用函数

给函数指针赋值,通常使用的是函数名

pr = sum;

1.直接替换函数名调用 pr(1,2);

2.取*运算调用 (*pr)(1,2);

函数指针的作用:充当回调函数(以函数指针为参数的函数)

int max(int a,int b){
    return a>b?a:b;
}

int min(int a,int b){
    return a>b?b:a;
}

void printdata(int (*p)(int,int),int a,int b){
    cout<<p(a,b)<<endl;
}

void (*pp) (int(*)(int,int),int,int) = printdata;
pp(max,1,2);
pp(min,1,2);

typedef和函数指针

typedef基本用法(给类型起别名

typedef int INT;
int a = 1;
INT aa =1;

补充结构体别名

typedef struct Node{
    int value;
    Node *next;
    ........
}NODE,*NODE,ARRAY[3];

typedef struct Node NODE;
typedef struct Node *NODE;
typedef struct Node ARRAY[3];

相当于给结构体,结构体指针,结构体数组都起了别名。

万能指针:空类型指针

void *p;

万能指针能操作所有类型指针,但使用前要进行强制类型转换

函数指针的类型

void print(){
    cout<<"万能指针调用函数指针"<<endl;
}
void *p = print;
((void(*)())p)();
*((void(*)())p)();
//void print()的函数指针是 void(*pr)();
//去掉变量名,所以函数指针的类型是 void(*)();
// ((void(*)())p)(); 将万能指针强制类型转换成void(*)(),再调用函数
// *((void(*)())p)(); 取星号运算,也是调用函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值