求助,c语言数组问题
inta[]={6,7,8,9,10};printf("%d%d%d",a[117],a[118],a[119]);如题,这样我发现在a[118]以后的数都是0,求高人解...
int a[]={6,7,8,9,10};
printf("%d %d %d",a[117],a[118],a[119]);
如题,这样我发现在a[118]以后的数都是0,求高人解释
.我让程序输出 a[117] a[118] a[119] a[120] a[121] 展开
printf("%d %d %d",a[117],a[118],a[119]);
如题,这样我发现在a[118]以后的数都是0,求高人解释
.我让程序输出 a[117] a[118] a[119] a[120] a[121] 展开
5个回答
展开全部
这个数组定义中没写有几个元素,因后边有5个初始化的数,所以数组中只有5个元素.而打印a[5]以后的数据都超出了这个数组实际存储的范围.而那些区域中存的什么数是不确定的.比如,a[4]之后的那个存储器中正好存的3,那么 打印a[5]就显示3, 同理, a[118]打印出来是0,也是这种原因.
追问
http://wenku.baidu.com/view/6cc4fa7d27284b73f24250e8.html
这里是我在百度文库上找的笔试题,填空题第三题也是一样,如果不确定的话他不会出这种题吧
追答
那就只能说碰巧那几个单元都存的是0. 在实际编程中,这是有可能的. 任何时候,存储器这个硬件中都有数据. 如果本程序中并没先写入数据.它就保持本次上电后最后一次写的数据不变.
至于最后一次写的是什么? 在本文的程序中是无法知道的. 有人说是随机数, 这个不是太准确. 其实就是最后一次写入时候的数据,只是现在不能预选确定它是几.
在目前PC计算机结构中,程序和数据都在一样的RAM中存储, 数据越界操作,也可能会操作到本程序代码区.
没都人敢说这个程序在任何平台上运行都把越界的三个数显示为 0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的数组只有5个元素,最后一个是a[4]是10,a[4]以后都没有意义,值依赖于当时的运行环境,如果引用的内存没有分配,还会导致程序崩溃。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是你以前给那几个空间赋值了,当时你没删除。。。现在还保存呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这只是一个随机值,不同的编译器得出的值也不一样!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你引用是数组的元素不存在呀
更多追问追答
追问
我也奇怪啊,但是我调试了,能得出结果啊,
而且好像有笔试题也这样出的
追答
看看你的显示结果
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询