编写一个函数,对递过来的3个数求出最大和最小数,并通过形参传送回调用函数(要求用指针方法实现)
时间: 2024-12-10 22:54:15 浏览: 14
在C++中,你可以编写一个函数`findMinMax`,它接受三个整型变量的指针作为参数,然后寻找并返回这三个数的最大值和最小值。这里我们假设需要一个回调函数`compareNumbers`,用于比较两个数并返回结果。下面是示例代码:
```cpp
#include <iostream>
// 假设的回调函数模板,接收两个整数指针和返回值
typedef int (*CompareFn)(const int*, const int*);
// 函数 findMinMax 接收指向整数的指针,以及回调函数指针
void findMinMax(int* a, int* b, int* c, CompareFn compare) {
int min = *a, max = *a;
// 使用回调函数比较当前元素和已知最小、最大值
if (compare(&min, b) < 0) {
min = *b;
}
if (compare(&max, b) > 0) {
max = *b;
}
if (compare(&min, c) < 0) {
min = *c;
}
if (compare(&max, c) > 0) {
max = *c;
}
std::cout << "Minimum number is: " << min << std::endl;
std::cout << "Maximum number is: " << max << std::endl;
}
// 比较两个数的简单版本,如果第一个大于第二个,则返回正数,反之为负
int compareNumbers(const int* num1, const int* num2) {
return *num1 - *num2;
}
// 主函数展示如何使用
int main() {
int numbers[] = {5, 10, 1};
int* nums[3] = {numbers, &numbers[1], &numbers[2]};
findMinMax(nums, nums + 1, nums + 2, compareNumbers);
return 0;
}
```
在这个例子中,`compareNumbers`函数是一个简单的比较函数,可以替换为其他自定义的回调函数。注意,在实际应用中,根据你的需求,`compareNumbers`可能需要更复杂的逻辑。
阅读全文