//六个使用C语言函数指针的应用场景示例代码:
//1、回调函数
#include <stdio.h>
void callback(int num) {
printf("Callback function: %d\n", num);
}
void performOperation(int num, void (*func)(int)) {
printf("Performing operation...\n");
func(num);
}
int main() {
performOperation(10, callback);
return 0;
}
//2、函数指针数组
#include <stdio.h>
void add(int a, int b) {
printf("Sum: %d\n", a + b);
}
void subtract(int a, int b) {
printf("Difference: %d\n", a - b);
}
int main() {
void (*funcArray[2])(int, int) = {add, subtract};
funcArray[0](5, 3);
funcArray[1](5, 3);
return 0;
}
//3、函数指针作为函数参数
#include <stdio.h>
void performOperation(int a, int b, int (*func)(int, int)) {
printf("Result: %d\n", func(a, b));
}
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
performOperation(5, 3, add);
performOperation(5, 3, subtract);
return 0;
}
//4、函数指针作为函数返回值
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int (*getOperation(char op))(int, int) {
if (op == '+') {
return add;
} else if (op == '-') {
return subtract;
} else {
return NULL;
}
}
int main() {
int (*func)(int, int) = getOperation('+');
printf("Result: %d\n", func(5, 3));
return 0;
}
//5、函数指针实现动态函数调用
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int main() {
int (*func)(int, int);
int a = 5, b = 3;
char operator = '*';
if (operator == '+') {
func = add;
} else if (operator == '-') {
func = subtract;
} else if (operator == '*') {
func = multiply;
} else {
printf("Invalid operator\n");
return 1;
}
printf("Result: %d\n", func(a, b));
return 0;
}
//6、函数指针实现函数重载
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
float add(float a, float b) {
return a + b;
}
int main() {
int (*intAdd)(int, int) = add;
float (*floatAdd)(float, float) = add;
printf("Integer Addition: %d\n", intAdd(5, 3));
printf("Float Addition: %.2f\n", floatAdd(5.5, 3.3));
return 0;
}
543

被折叠的 条评论
为什么被折叠?



