请问各位大佬,我这个insert函数为什么报错?

#include<iostream>
#define maxsize 100
using namespace std;

int arr[maxsize]={-2,3,6,1,7,9,11,4,-5,9};
int length=10;

void partation(int arr[],int length,int k)
{
    
    int i=0;
    int j=length-1;
    int temp=arr[0];
   while(i<j)
    {
        while(i<j&&k<=arr[j])
        --j;
        if(i<j)
        {
            arr[i]=arr[j];
            i++;
        }
        while(i<j&&k>arr[i])
        ++i;
        if(i<j)
        {
            arr[j]=arr[i];
            j++;
        }
        
    }
    arr[i]=temp;
    
}

int insert(int arr[],int length,int n,int c)
{
    if(n<0||n>length-1||length>=maxsize)
    return 0;
    for(int i=length-1;i>n;++i)
    arr[i+1]=arr[i];
    arr[n]=c;
    return 1;
}


int main()
{
    partation(arr,length,5);
    insert(arr,length,3,100);
    for(int i=0;i<length;++i)
    cout<<arr[i]<<" ";
    
    return 0;
}

 

错了,循环中i>n改成i>n-1,这样第n个才能后移

for(int i=length-1;....) arr[i+1]=... 当i=length-1时,arr[i+1]就越界了

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html