超出数组大小元素值

时间:2017-06-06 11:13:31

标签: c arrays memory undefined-behavior

How dangerous is it to access an array out of bounds?这并不能说明存储的值是什么。

当我尝试打印出程序中显示的数组大小元素时,它正在打印0。它总是0或一些垃圾值。

程序

#include<stdio.h>
int main()
{
    int a[5] = {10};
    printf("\n\ra[6] = %d",a[6]);
    printf("\n\ra[7] = %d",a[7]);
    printf("\n\ra[8] = %d",a[8]);
    printf("\n\ra[9] = %d",a[9]);
    return 0;
}

输出

  

a [6] = 0 a [7] = 0 a [8] = 0 a [9] = 0

我的问题是数组大小元素的价值是什么?它总是垃圾值还是零?

1 个答案:

答案 0 :(得分:4)

  

当我尝试打印数组大小元素时....

等待,停止! 4({1}}(索引)[ C数组使用0-based indexing ]如果定义类似i的数组,则无效的内存访问会导致undefined behavior。你根本不能指望任何东西

  • 如果您很幸运,您在运行程序时可能会收到分段错误,该程序强烈表示某种无效的内存访问。

  • 如果您不走运,该程序可能会读取您笔记本电脑上存储的信用卡号码,并为您的团队订购披萨任何小马,并将剩余的钱转移到ISIS的某个匿名帐户。 Iff 你愿意面对只有这样才能访问超出限制的记忆,否则,不要这样做。

摘要:不要编写代码,因为可以,或者允许使用语法。尝试理解要编写的代码。对于共振 ,数组大小提到 。如果我们不必考虑尺寸,为什么那么大,在堡垒?