从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;
}