You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言数组求最值函数接收NULL参数时如何返回-1?

C语言数组最值函数NULL参数处理方案

核心修改逻辑

在array_min和array_max函数入口优先做参数合法性校验:

  • 若传入的数组指针为NULL,直接返回-1
  • 额外补充数组长度校验,若数组长度小于等于0也直接返回-1,避免数组越界访问问题

修改后完整代码

#include <stdio.h>

int array_min(const int [], const int);
int array_max(const int [], const int);

int main() {
    int input_arr[] = {2,3,4,5,6};
    printf("%d\t", array_min(input_arr, 5));
    // 输出:2
    printf("%d\t", array_max(input_arr, 5));
    // 输出:6
    printf("%d\t", array_max(NULL, 5));
    // 预期输出:-1
    return 0;
}

int array_min(const int input_arr[], const int arr_size) { 
    // 新增参数校验逻辑
    if (input_arr == NULL || arr_size <= 0) {
        return -1;
    }
    int a, min = input_arr[0];
    for(a = 0; a < arr_size; a++) {
        if(input_arr[a] < min) {
            min = input_arr[a];
        }
    }
    return min;
}

int array_max(const int input_arr[], const int arr_size) { 
    // 新增参数校验逻辑
    if (input_arr == NULL || arr_size <= 0) {
        return -1;
    }
    int a, max = input_arr[0];
    for(a = 0; a < arr_size; a++) {
        if(input_arr[a] > max) {
            max = input_arr[a];
        }
    }
    return max;
}

注意事项

当前方案严格按照作业要求返回-1作为非法参数的标识,如果后续需要区分数组本身存在-1和参数非法两种场景,可以改为用返回值标识执行状态、用指针参数输出最值的形式实现。

内容的提问来源于stack exchange,提问作者Paul Atreides

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:24:03