一个函数在编译时被分配给一个入口地址。这个函数的入口地址就被称为函数指针。
#include<stdio.h>
#include<iostream>
int max(int, int);
int main() {
int (*p)(int,int);
int a, b, c;
p = max;
printf("请输入a,b的值,以空格隔开:\n");
scanf_s("%d %d", &a, &b);
c = (*p)(a, b);
printf("a=%d,b=%d,max=%d\n", a, b, c);
system("pause");
return 0;
}
int max(int a, int b) {
if (a >= b) {
return a;
}
else
{
return b;
}
}
用指向函数的指针作函数参数:
#include<stdio.h>
#include<iostream>
int max(int, int);
int min(int, int);
int add(int, int);
int process(int a, int b, int(*func)(int a, int b));
int main() {
int a, b;
printf("请输入a,b的值,以空格隔开:\n");
scanf_s("%d %d", &a, &b);
printf("a=%d,b=%d,max=%d\n", a, b, process(a,b,max));
printf("a=%d,b=%d,min=%d\n", a, b, process(a, b, min));
printf("a=%d,b=%d,add=%d\n", a, b, process(a, b, add));
system("pause");
return 0;
}
int max(int a, int b) {
if (a >= b) {
return a;
}
else
{
return b;
}
}
int min(int a, int b) {
if (a >= b) {
return b;
}
else
{
return a;
}
}
int add(int a, int b) {
return a + b;
}
int process(int a, int b, int(*func)(int a,int b)) {
return (*func)(a, b);
}
输出: