[英]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.