c语言解决,不要函数指针,简单一点
时间: 2024-10-17 18:07:43 浏览: 20
在C语言中,如果你想避免使用函数指针,处理一些简单的任务,比如查找数组中的最大值或最小值,可以使用结构体结合自定义排序规则。这里有一个非函数指针的简单示例,用于寻找整型数组中的最小元素:
```c
#include <stdio.h>
// 定义一个结构体,包含一个值和指向该值的指针
typedef struct {
int value;
int *ptr;
} Item;
// 自定义比较函数,用于结构体间的比较
int compare(const void *a, const void *b) {
Item *itemA = (Item *)a;
Item *itemB = (Item *)b;
return itemA->value - itemB->value; // 升序比较
}
// 主函数,寻找并返回数组中的最小值
int find_min(int arr[], int size) {
Item items[size]; // 创建结构体数组
for (int i = 0; i < size; ++i) {
items[i].value = arr[i];
items[i].ptr = &arr[i];
}
// 使用qsort对结构体数组进行排序
qsort(items, size, sizeof(Item), compare);
// 返回最小值
return items[0].value;
}
int main() {
int numbers[] = {5, 2, 9, 1, 7};
int array_size = sizeof(numbers) / sizeof(numbers[0]);
int min = find_min(numbers, array_size);
printf("The smallest number is %d\n", min);
return 0;
}
```
在这个例子中,我们通过创建结构体`Item`将数组元素与其位置关联起来,然后使用标准库函数`qsort`对结构体数组进行排序,而不是直接操作函数指针。排序完成后,数组的第一个元素即为最小值。
阅读全文