繁体   English   中英

从 printf 获取分段错误

[英]Getting Segmentation fault from printf

所以基本上我写了 2 个函数,从 input_array 设置最小和最大数字,其中我想实现一个代码,当调用 NULL 而不是 input_array 时返回“-1”。 代码看起来像这样。

#include <stdio.h>
#include <math.h>
int array_min(const int input_array[], const int array_size);
int array_max(const int input_array[], const int array_size);
int main(){
        int input_array[]={1,12,3,43,5};
        printf("%d\n", array_min(input_array, 5));
        printf("%d\n", array_max(input_array, 5));
        printf("%d\n", array_max(NULL, 5));
}
int array_min(const int input_array[], const int array_size){
        int min = input_array[0];
        for(int i=1; i<array_size; i++){
                if( input_array[i] < min){
                        min = input_array[i];
                }
        }
        return min;
}
int array_max(const int input_array[], const int array_size){
        int max = input_array[0];
        for(int a=1; a<array_size; a++){
                if(input_array == NULL){
                        return -1;
                }
                else{
                        if(input_array[a]>max){
                                max = input_array[a];
                        }
                }
        }
        return max;
}

我也尝试将 max 设置为 -1 但结果是相同的,程序被编译,但不是所需的 -1 输出,而是“分段错误”。 将它实现到 min 和 max 函数的最佳方法是什么?

问题是,在检查传入的NULL之前,您正在取消引用指针

 int max = input_array[0];

在您验证输入后执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM