我在c中编写了以下代码,以检查代码是否会中断:
int main(void)
{
int A [5] [2] [3];
printf("%d\n\n", A[6]);
printf("%d\n\n", &A[6][0][0]);
system("pause");
}
Run Code Online (Sandbox Code Playgroud)
现在,代码没有破坏,这是我没想到的.当我们声明一个多维数组:时int A [5][2][3],概念上并不意味着它的第一级中的A是一个包含5个元素(0 - 4)的一维数组,并且该数组的每个元素本身都是一个包含2个元素的一维数组并且该数组的每个元素都是一个包含3个元素的一维数组?如果这个概念是正确的,那么A[6][0][0]甚至可以
存在 - 因为在第一级我们只有5个元素(基于0).
任何帮助将不胜感激.
您正在访问阵列外的位置,没有A[6].这是未定义的行为,任何事情都可能发生.
请注意,这A[5]是一个定义良好的位置(超过数组末尾),因此获取指向它的指针是合法的,但尝试访问该指针则不然.但是,获取指向A[6]或任何其他更大索引的指针是完全未定义的.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |