C中的2D数组索引怎么样?

cra*_*des -3 c indexing multidimensional-array

我是C编程的新手,我需要使用2D整数数组(矩阵).例如,我这样做:

void main(){
   int matrix[2][2] = { {0,1}, {2,3} };
   printf("%i", matrix[4][4]); /*Here should be an index error, but that doesn't happen*/
}
Run Code Online (Sandbox Code Playgroud)

怎么了?

小智 5

怎么了?

你对编译器和/或语言的假设有什么不对.C没有边界检查.如果您正在访问数组越界,编译器将不会警告您.

相反的是:您的代码现在无效,据说可以调用未定义的行为,并且可以随意执行任何操作(包括崩溃或看似"正常工作").