#找二位数组最大值?为啥报错[Error] invalid types 'int[int]' for array subscript


#include
    int main() {
    int G(int *s);
    int a[5][5]= {1,2,3,4,5,6,7,8,9,955,265,6,36,154,9116,56,98,74,54};
    int *p;
    p=&a[0][0];
    printf("%d",G(p));
    return 0;
}
int G(int *s) {
    int i=0,n,m;
    for(; i<=5; i++) {
        n=0;
        for(m=*s; n<5; n++)
            if(m<=s[i][n]) m=s[i][n];
    }
    return m;
}

m=*s你应该在双循环开始前赋值,不能在内层for循环中赋值啊。那样前面几次循环找最大值都白找了么
另外s是int *类型,你是不能用s[i][n]二维数组方式访问的啊。循环也写错了,修改如下:

#include<stdio.h>
    int main() {
    int G(int *s);
    int a[5][5]= {1,2,3,4,5,6,7,8,9,955,265,6,36,154,9116,56,98,74,54};
    int *p;
    p=&a[0][0];
    printf("%d",G(p));
    return 0;
}
int G(int *s) {
    int i=0,n,m=*s;
    for(; i<5; i++) {
        n=0;
        for(; n<5; n++)
            if(m<=*(s+5*i+n) )
                m=*(s+5*i+n);
    }
    return m;
}