二维数组的调用哪里出问题了,有什么注意事项吗?

代码目的:
测试crap的获胜概率。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
# define SIZE 21
int game();
int judge(int sum);
void outcome(int total[][SIZE]);
int main()
{    int status,sum,temp;//status 0-end 1-continue 
    int total[2][SIZE]={0};  //i for times j for 
    srand(time(NULL));
    //start
    int test;
    printf("%s","请输入测试次数:\n");
    scanf("%d",&test);
    for(int i = 0 ;i < test; i++){
        sum=game();
        status=judge(sum);
        temp=sum;
        switch(status){
            case 0:
                total[0][0]++;
                break;
            case 1:
                total[1][0]++;
                break;
            case 2:
                for (int j = 1; ;j++ ){
                    int target;
                    target = game();
                    if(target == temp){
                        if(j>=SIZE){
                            total[0][SIZE-1]++;
                        }else{
                            total[0][j-1]++;
                        }
                        break;
                    }
                    if(target==7){
                        if(j>=SIZE){
                            total[1][SIZE-1]++;
                        }else{
                            total[1][j-1]++;
                        }
                        break;
                    }
                }        
        }
    }
    outcome(total[][SIZE]);
    return 0;
}
void outcome(int total[][SIZE]){
    printf("%s","测试结果如下为:\n");
    printf("%6s","");
    for(int i =1;i<SIZE;i++){
        printf("%3d",i);
    }
    for(int j=0;j<SIZE;j++){
        switch(j){
            case 0:
                printf("%6s","\nWIN");
                break;
            case 1:
                printf("%6d","\nLOSE");
        }
        for(int k=0;k<SIZE;k++){
            printf("%3d",total[j][k]);
        }
    }
}
int game( ){
    int roll_1,roll_2,sum;
    roll_1= rand() % 6 + 1;
    roll_2= rand() % 6 + 1;
    sum = roll_1 + roll_2;
//    printf("%3d  %7d\n",roll_1,roll_2);
    return sum;
}
int judge(int sum){
    switch(sum){
        case 7:
        case 11:
//            printf("%s","Player Win!\n");
            return 0;
        case 2:
        case 3:
        case 12:
//            printf("%s","Host Win!\n");
            return 1;
        default:
            return 2;
    }
}
 

报错如下:
64 16 [Error] expected primary-expression before ']' token

1. 报错行数是第50行

50行: outcome(total[][SIZE]);
给outcome函数传的参数应该是一个int型,
你传的total[][SIZE],一他没有指定传入进去的是哪个元素; 二SIZE做下标越界了。
按照你的相关, outcome()函数传入一个二维数组指针就行了。
修改意见:

7  行: void outcome(int total[][SIZE]);    // 这里函数声明的时候可以用total[][SIZE], 是因为他代表是一个数据类型 int [][SIZE]
50行: outcome(total);
54行: void outcome(int ** total[][SIZE]){    // 这里同声明。
2. 第二处问题代码
 65             case 1:
 66                 printf("%6d","\nLOSE");   

修改成:

 65             case 1:
 66                 printf("%6s","\nLOSE");    // "\nLOSE" 是char*类型。
3.最后程序还是有点问题, 语法上没啥问题了, 是逻辑上的问题。