我有一个 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");
谢谢
最佳答案
C 不对数组访问进行边界检查。它只是将非法访问标记为“未定义行为”,因此每个实现都可以随心所欲。由于使用 C 意味着您知道自己在做什么,因此 C 允许您 shoot yourself in the foot .
在实践中,有时会出错,有时不会。有时您不会收到错误,但客户会收到。最坏的情况:您不会收到错误,但程序的行为真的很奇怪(变量无缘无故地更改值等)。
关于c语言+二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359952/