关于数组下标的问题

haolly 2011-05-11 08:47:53
#include<iostream>
using namespace std;
int main()
{
int arry1[6];
for(int i=0;i<=7;i++)
cin>>arry1[i];//超出了数组下标
for(int j=0;j<=7;j++)
cout<<arry1[j]<<endl;//超出了数组下标 不但能输入,而且能输出
arry1[6]=999;
cout<<arry1[6];
}
...全文
61 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wutao0596 2011-05-11
  • 打赏
  • 举报
回复
数组可以超下标,不过很危险
haolly 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 meteor_code 的回复:]
上别人的床也不是不可以,但很危险
[/Quote]
精辟
「已注销」 2011-05-11
  • 打赏
  • 举报
回复
当然可以,只不过你访问了变量的内部定义参数了。
一般数组定义的时候,我们可访问的是数组的元素,紧接着的一个地址将记录数组的大小,也就是你说的array[6],在对array[6]进行读写操作之后,并不能保证它还能按照你的意愿正常使用!
char *p = new char; 堆操作也有类似的内存划分,否则系统无法知道p的大小,系统不懂啥叫类型,它只认内存大小,所以你的操作时能成功的,但是没有什么实际意义。
Meteor_Code 2011-05-11
  • 打赏
  • 举报
回复
上别人的床也不是不可以,但很危险
longdenghua 2011-05-11
  • 打赏
  • 举报
回复
这个很危险,踩内存了可能导致系统崩溃,出现这样的错误,很难发现,程序员编写时要特别小心
bbyuan 2011-05-11
  • 打赏
  • 举报
回复
访问了栈空间。堆栈分配的时候比你想象的要大点。里面放一些分配的参数等。
越界访问的安全性不保证。
delphiwcdj 2011-05-11
  • 打赏
  • 举报
回复
这个是程序员自己负责的
龙哥依旧 2011-05-11
  • 打赏
  • 举报
回复
"超出了数组下标 不但能输入,而且能输出"
正常现象

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧