来自返回数组最大值的函数的 C 分段错误

chr*_*zla 4 c arrays max segmentation-fault

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

这是我的 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;
}
Run Code Online (Sandbox Code Playgroud)

我使用 macOS 和 VSC。

Rhy*_*man 7

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

一些括号修复了段错误。

if ((*arrayPointer)[i]>max) {
    max = (*arrayPointer)[i];
}
Run Code Online (Sandbox Code Playgroud)

  • @chrizzla 不,不是。另请检查我的答案。(无论如何,这个答案是简洁、准确的,值得被接受的答案)。 (2认同)