2024.12.19 | admin | 6次围观
题目函数指针数组 声明一个包含三个元素的函数指针数组,每个函数指针分别指向返回值为浮点数的函数。编写这三个函数,分别实现计算圆的面积、正方形的面积和三角形的面积,并用函数指针数组调用它们。
#include <stdio.h> #include <math.h> float calculateCircleArea(float radius) { return M_PI * radius * radius; } float calculateSquareArea(float side) { return side * side; } float calculateTriangleArea(float base, float height) { return 0.5 * base * height; } int main() { float (*areaFuncs[])(float) = {calculateCircleArea, calculateSquareArea, calculateTriangleArea}; for (int i = 0; i < 3; i++) { printf("Area %d: %.2f\\n", i+1, areaFuncs[i](3.0)); // 以半径、边长等参数调用不同函数 } return 0; }
和 在语义上是等价的,都是通过函数指针调用函数并传递参数。两者的区别在于语法上的书写风格。
这种写法将函数指针 直接当作函数名来使用,后面跟上参数列表,就好像在调用普通函数一样。编译器会自动将这种写法转换为函数指针的调用。
这种写法使用了解引用操作符 ,将函数指针解引用,然后再用括号将解引用后的函数指针与参数列表括起来。这种写法更显式地表示对函数指针的解引用操作。