c语言+二维数组

ios*_*per 1 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");
Run Code Online (Sandbox Code Playgroud)

谢谢

cni*_*tar 5

C不对数组访问进行边界检查.它只是将非法访问标记为"未定义的行为",因此每个实现都可以随心所欲.因为使用C意味着你知道你正在做什么,C允许你用脚射击自己.

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