您的位置:首页 > 编程语言 > C语言/C++

c++数组越界相关

2016-05-21 08:39 288 查看

c++数组越界相关

标签(空格分隔): 问题少年系列

今天同学问我一个很细节的问题,觉得提问那个人提不错的

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int c=5;
int a[2]={1,2};
cout<<&a[0]<<endl;
cout<<&a[1]<<endl;
cout<<&a[2]<<endl;
cout<<&a[3]<<endl;
cout<<&a[4]<<endl;
cout<<&c<<endl;
a[4]=666;
cout<<c;
system("pause");
return 0;
}




问题:为什么c和a【4】内存一样?

我也很疑惑,所以查了一下

栈是由高往低增长的,而数组的存储是由低位往高位存的

int类型都占用4个字节

c++不对数组边界检查

以上三条足以解决问题

但其中还存在问题?a[2],a[3]的地址?应该是是因为他用a数组,而a数组是int类型导致的,目测是内部机制的原因

我的原文链接

http://flyily.com/2016/05/21/c-%E6%95%B0%E7%BB%84%E8%B6%8A%E7%95%8C%E7%9B%B8%E5%85%B3/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 内存