首页 > 解决方案 > 来自返回数组最大值的函数的C分段错误

问题描述

我只有一个函数可以找出整数数组的最大值,但我得到一个分段错误,我找不到,因为编译器没有向我显示错误所在的行。

这是我的 C 代码:

#include <stdlib.h>
#include <stdio.h>

//Funktion ermittelt den größten Wert eines Arrays
int groesstesElement(int **arrayPointer){
    int max = 0;
    for (int i = 0; i < 3; i++) {
        if (*arrayPointer[i]>max) {
            max = *arrayPointer[i];
        }
    }
    return max;
}


int main (int argc, char **argv) {
    int array[4]={1,2,3,4};
    int *ptr = array;
    int z = groesstesElement(&ptr);
    printf("%d\n", z);

    return EXIT_SUCCESS;
}

我使用 macOS 和 VSC。

标签: arrayscsegmentation-faultmax

解决方案


在 C 中,数组索引[]的优先级高于指针取消引用*https ://en.cppreference.com/w/c/language/operator_precedence

一些括号修复了段错误。

if ((*arrayPointer)[i]>max) {
    max = (*arrayPointer)[i];
}

推荐阅读