Arduino 函数指针示例
📝示例代码
int max1(int a, int b)
{
return (a > b ? a : b);
}
int min1(int a, int b)
{
return (a < b ? a : b);
}
//函数指针
int(*fuc)(int a, int b);
int(*fuc2)(int a, int b);
void setup() {
Serial.begin(115200);
}
void loop() {
int result;
fuc = max1;//通过函数指针间接调用函数
fuc2 = min1;
result = fuc(11,49);Serial.println(result);
result = fuc2(56,17);Serial.println(result);
}
- 📜输出结果:
11:03:04.725 -> 49
11:03:04.725 -> 17
- 🌿使用 typedef 定义函数指针别名
🔖当函数指针作为其它函数的参数,特别是作为返回值时,直接使用的函数指针无法编译。
typedef int(*FUC)(int a, int b);
typedef int(FUC2)(int a, int b);
int max1(int a, int b)
{
return (a > b ? a : b);
}
int min1(int a, int b)
{
return (a < b ? a : b);
}
void setup() {
Serial.begin(115200);
}
void loop() {
FUC fuc;//函数指针
FUC2 *fuc2;
int result;
fuc = max1;
fuc2 = min1;
result = fuc(11, 49); Serial.println(result);delay(3000);
result = fuc2(56, 17); Serial.println(result);delay(3000)
}