在分配的内存之外使用数组索引看起来很好,怎么样?

时间:2015-07-13 11:36:23

标签: c arrays

int main (){

    int number[5];

    number[0]=45;
    number[1]=12;
    number[2]=555;
    number[5]=89;
    number[6]=46; 

    printf("%d",number[6]); 
}

我们知道,我们不应该访问数组越界。这里,number[6]如何可执行?

2 个答案:

答案 0 :(得分:4)

  

数字[6]如何可执行

我谦虚地建议使用“accessible”而不是“executable”

  • 第1点。 number[5]number[6]都超出范围。请记住,C使用基于0的数组索引。

  • 第2点。访问超出范围的内存会导致undefined behaviour。这包括各种奇怪的行为。

答案 1 :(得分:2)

超出任何数组的限制会导致undefined behavior

您已声明数字为大小为5的数组。并且您尝试使用数字[5]和数字[6]。这是一种未定义的行为。