c语言+二维数组

时间:2012-02-20 10:53:56

标签: c multidimensional-array undefined-behavior

我有一个c代码。 我给出了一个数组索引为12.但是它允许我将数组初始化为该索引,而不是为索引输出错误。 任何人都可以向我解释它是否正在发生。

int vas1[12][12];
    vas1[15][15]=0;

    int i,j;
    for (i = 0; i < 15; i ++)
    {
        for (j = 0; j < 15; j ++) {
            printf("i=%d j=%d vas=%d",i,j,vas1[i][j]); 

        }
    }

printf("Success");

由于

1 个答案:

答案 0 :(得分:5)

C不会对数组访问进行边界检查。它只是将非法访问标记为“未定义的行为”,因此每个实现都可以随心所欲。由于使用C意味着您知道自己在做什么,因此C允许您shoot yourself in the foot

在实践中,有时你会得到一个错误,有时候不会。有时你不会得到错误,但客户会。最糟糕的情况:你不会得到一个错误,但是程序的行为真的很奇怪(变量无缘无故地改变了值等)。