【发布时间】:2017-06-06 11:13:31
【问题描述】:
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
我的问题是超出数组大小的元素的值是多少?它总是垃圾值还是零?
【问题讨论】:
-
它是 undefined,你的无效访问可能会发生任何事情。
-
@Stargateur 不一样,我在问价值是什么
-
你知道undefined是什么意思吗?
-
@EmbeddedC 这真的很接近,请阅读线程的答案你会发现你问什么。
-
"[将] 它总是 [打印] 垃圾值还是零?" - 不,它可能会终止你的程序,让恶魔从你的鼻子里飞出来,并杀死你的长子。未定义行为是未定义。
标签: c arrays memory undefined-behavior