六个使用C语言函数指针的应用场景

 

//六个使用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;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值