这段C语言的代码为啥错了

就是n个整数,是前面各数顺序向后移动m个位置,最后m个数变成前面m个数

img


编译的时候没犯错,但是运行的时候在移动 的那一步就运行不了了,为啥

pta有这个题目,就是实现对数组进行循环左移


//逆转法
//分别先对前半部分和后半部分进行逆转,然后再对整个数组进行逆转,刚好可以达到循环左移的效果。
//以上顺序可以任意调换
#include<stdio.h>
void reverse(int arr[],int start,int end){
    while(start<end){
        int temp=arr[start];
        arr[start]=arr[end];
        arr[end]=temp;
        start++;
        end--;
    }
}
int main(){
    int size,movements;
    scanf("%d%d",&size,&movements);
    movements=movements%size;
    int arr[size];
    for(int i=0;i<size;i++)
        scanf("%d",&arr[i]);
    reverse(arr,0,movements-1);
    reverse(arr,movements,size-1);
    reverse(arr,0,size-1);
    for(int i=0;i<size;i++){
        printf("%d",arr[i]);
        if(i<size-1)
            printf(" ");
    }
    return 0;
}

输入:
8 3
1 2 3 4 5 6 7 8
输出:
4 5 6 7 8 1 2 3

xxx函数的第一个数组参数少了右边中括号,居然编译没报错?

第三行,avv后面多了一个 [
代码能运行?