2 wolfleer wolfleer 于 2013.09.17 21:16 提问

结构体里数组输出越界

typedef struct _base
{
int vec[4];
int size;
void init()
{
size = 4;
for(int i=0; i<size; i++)
vec[i] = i+1;
}
void show()
{
for(int i=0; i<=size; i++)
std::cout<<"vec["<<i<< "] is \t"<<vec[i]<<std::endl;
}
}base;
int main()
{
base b;
b.init();
b.show();
return 0;
}
结构体里数组在初始化时并未越界,输出的时候越界,为什么这段代码的返回值里vec[4]=4?

1个回答

liuyy2007
liuyy2007   2013.11.27 21:11
typedef struct _base
{
    int vec[4];
    int size;
    void init()
    {
        size = 4;
        for(int i=0; i<size; i++)
        vec[i] = i+1;
    }
    void show()
    {
        for(int i=0; i<=size; i++)
            std::cout<<"vec["<<i<< "] is \t"<<vec[i]<<std::endl;
              // 因为vec[4]实际上是size,请看两个值的地址是一样的
         std::cout << "vec[4] Address-> " << &vec[4] << std::endl;
         std::cout << "size Address -> "   << &size << std::endl; 
             /********************************************************/

    }

}base;
int main()
{
base b;
b.init();
b.show();
return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!