永发信息网

dev c++的数组问题!

答案:3  悬赏:70  手机版
解决时间 2021-05-10 12:21
  • 提问者网友:箛茗
  • 2021-05-09 13:43

在dev c++编译器中 定义一个数组a[2],里面应该有两个元素a[0]和a[1],但是我现在这样写:

int main()
{
int a[2];
a[100]=45;
printf("%d",a[100]);
system("PAUSE");
return 0;
}

a[100]早就超出a[2]的范围的,但是竟然可以使用!!!编译器也没提示出错!!!

这是为什么?

最佳答案
  • 五星知识达人网友:一秋
  • 2021-05-09 14:30

那是不可能的 不要骗人吧! 编译时 不会出错 但运行时会出错 你访问了未知的空间

全部回答
  • 1楼网友:痴妹与他
  • 2021-05-09 16:18

C和C++就是这样的,数组下标越界不会给出错误信息。

但是实际运行的时候,是可能出错的。

  • 2楼网友:西岸风
  • 2021-05-09 16:01
错误的程序有时候也是能运行的。 a[100]指向的是a之后100个位置的地方。如果这个地方,属于程序的寻址空间,运行时就不会发生错误,如果超出,应该会发生地址非法访问的错误。另外,如果有其他操作修改或者访问了a[100]这个地方的内容,会发生不可预知的问题,因为你错误/意外的修改了这个地方的内容。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯