一个函数在编译时被分配给一个入口地址。这个函数的入口地址就被称为函数指针。
#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); }
输出:
原文:https://www.cnblogs.com/xiximayou/p/12121810.html