需求:編寫函數接收 int 數組,通過指針參數「帶回」最大值與最小值。
#include <stdio.h>
void find_min_max(int *arr, int size, int *pmax, int *pmin) {
*pmax = *pmin = arr[0]; // 初始化
for (int i = 1; i < size; i++) {
if (arr[i] > *pmax) *pmax = arr[i];
if (arr[i] < *pmin) *pmin = arr[i];
}
}
int main() {
int a[] = {1, 2, 3, 4, 5, 6};
int max, min;
find_min_max(a, 6, &max, &min);
printf("Max: %d, Min: %d\n", max, min); // Max: 6, Min: 1
return 0;
}
int *arr 接收首元素地址。int *pmax 傳入變量地址,函數內通過解引用修改原變量。size > 0 並斷言指針非空。若需返回多個統計值(和、平均、方差),可定義結構體:
typedef struct { int max, min; long long sum; } Stats;
void compute_stats(int *arr, int n, Stats *out);