从C到C++:函数指针

函数指针

基本概念

程序运行期间,每个函数都会占用一段连续的内存空间。而函数名为函数所占内存区域的起始地址(入口地址)。将入口地址赋给一个指针变量,使指针变量指向该函数。然后通过变量就可以调用这个函数。这种指向函数的指针就是“函数指针”。

定义形式

类型名(* 指针变量名)(参数类型1,参数类型2),例如int (*pf)(int, char);

使用方法

#include<stdio.h>
void PrintMin(int a, int b)
{
	if (a < b)
	{
		printf("%d", a);
	}
	else
	{
		printf("%d", b);
	}
}

int main() 
{
	void(*pf)(int, int);
	int x = 4, y = 5;
	pf = PrintMin;
	pf(x, y);
	return 0;
}

函数指针与qsort库函数

其中,比较函数需要自己编写

  • 实例

#include<stdio.h>
#include<stdlib.h>
int MyCompare(const void * elem1, const void * elem2) {
	unsigned int *p1, *p2;
	p1 = (unsigned int*)elem1;
	p2 = (unsigned int*)elem2;
	return (*p1 % 10) - (*p2 % 10);
}

# define NUM 5
int main() 
{
	unsigned int an[NUM] = {8,123,11,10,4};
	qsort(an, NUM, sizeof(unsigned int), MyCompare);
	for (int i = 0; i < NUM; i++) { 
		printf("%d ", an[i]);
	}
		
	return 0;
}
posted @ 2020-10-12 11:51  rookieveteran  阅读(90)  评论(0编辑  收藏  举报