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
我的问题是数组大小元素的价值是什么?它总是垃圾值还是零?
答案 0 :(得分:4)
当我尝试打印数组大小元素时....
等待,停止! 4
({1}}(索引)[ C数组使用0-based indexing ]如果定义类似i
的数组,则无效的内存访问会导致undefined behavior。你根本不能指望任何东西。
如果您很幸运,您在运行程序时可能会收到分段错误,该程序强烈表示某种无效的内存访问。
如果您不走运,该程序可能会读取您笔记本电脑上存储的信用卡号码,并为您的团队订购披萨任何小马,并将剩余的钱转移到ISIS的某个匿名帐户。 Iff 你愿意面对只有这样才能访问超出限制的记忆,否则,不要这样做。
摘要:不要编写代码,因为可以,或者允许使用语法。尝试理解要编写的代码。对于共振 ,数组大小提到 。如果我们不必考虑尺寸,为什么那么大,在堡垒?