C++,函数指针

今天来简单的了解一下函数指针,下面有俩个供调用的示例函数.

//处理int类型的数据
int intCompare(const void* key1, const void* key2) {//使用void*支持多种数据类型
	const int *k1 = (const int*)key1;
	const int *k2 = (const int*)key2;

	//第一个减去第二个
	return (*k1 - *k2);//k1,k均为指针,需解引得到整形数
}

//处理char类型的数据
int charCompare(const void* key1, const void* key2) {
	//const char k1= *(const char*)key1;先解引
	const char* k1 = (const char*)key1;
	const char* k2 = (const char*)key2;

	return (*k1 - *k2);//解引局部指针变量k1,k2
}

上面我们可以看到,这有俩个处理不同数据类型的函数,下面我来简单的说一下函数指针的定义以及调用方式:

int x = 0, y = 0;//给函数指针提供的实参变量,仅为调用示例需要,无实际意义

第一步,函数指针的定义,首先把函数声明移动过来,把函数名改成(*函数指针名),

int(*fp)(const void* key1,const void* key2);

第二步调用,这里有俩中方式可供使用

fp = &intCompare;

(*fp)(&x,&y);//方式1,按普通指针解引的方式进行调用,(*fp)等fp同于intCompare;

fp(&x,&y);//方式2,直接调用

//使用 qsort   对整形数组排序
int arr[]={2, 10, 30, 1, 11, 8, 7, 111, 520};
//在qsort排序函数中使用函数指针intCompare
qsort(arr, sizeof(arr)/sizeof(int), sizeof(int), &intCompare);

以上就是今天的分享了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值