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?
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;
}