C语言定义函数一直找不到错在哪

编译器一直报这个错,没找到到底错哪,大神请指导xia
[Warning] passing argument 1 of 'FindMax' makes pointer from integer without a cast

#include <stdio.h>
#define N 10
int FindMin(int b[],int n);
int FindMin(int b[],int n);
int main(){
    int b[N];
    int max,min,i,sum;
    for(i=0;i<N;i++){
        scanf("%d",&b[i]);
    }
    max=FindMax(b[N],N);
    min=FindMin(b[N],N);
    sum=max+min;
    printf("sum=%3d",sum);

    return 0;
}
int FindMax(int b[],int n){
    int i,max;
    max=a[0];
    for(i=1;i<n;i++){
        if(a[i] > max)
            max=a[i];
    }

    return max;
}
int FindMin(int b[],int n){
    int j,min;
    min=a[0];
    for(j=1;j<n;j++){
        if(a[j] < min)
            min=a[j];
    }

    return min;
}


这不是错误,只是一个警告,如果不想看到这个警告,可以修改代码
int FindMax(int b[],int n){
->
int FindMax(int * b,int n){

别的类似

FindMax这个函数第一个参数定义为int数组,实际调用需要传入数组地址,你代码传入的是b[N],表示数组第N+1个元素,是个int值,
所以会报警告,代码编译会强制把这个int值转成地址,代码逻辑肯定有问题,另外数组初始化N个元素,访问到了N+1,越界是个问题,
还有函数里面变量没出现过怎么用啊 感觉好多问题。

是不是存在对子母大小写的错误和书写的规范性问题?

警告而已,我可能类型不对