关于二维数组行列不能使用变量的问题

int main()
{
int H=3;
int L=3;
char a[H][L]={0};
rturn 0;
}

各位兄弟我问一个问题,这里用HL两个量编译会报错,改成具体的常量就可以正常编译了

void CS(char a[3][3])
{
int i,j;

for(i=0;i<3;i++)
{

    for(j=0;j<3;j++)
    {

        a[i][j]='1';

    }
}

}
为什么这里同样定义i和j,却可以正常编译,难道H和L是变量,i和j就不是变量了吗

上面的char a[H][L]目的是在定义一个三行三列的二维数组a,它表示的是整个二维数组,定义时需要使用常量;下面a[i][j]表示的时行为i列为j时的单个字符,比如a[3][3]代表的第三行第三列的单个字符,是类型为char的数据。