注册 登录
编程论坛 C++教室

不懂我就问 请大家帮忙`~~

faint路漫漫 发布于 2008-04-19 12:16, 364 次点击
#include<iostream.h>
void main(){    
const maxlength=6;
char name[maxlength];
cin.getline(name,10);
cout<<name<<endl;
for(int i=0;i<10;i++)
 cout<<name[i]<<endl;
cout<<sizeof(name)/sizeof(char)<<endl;
}
为什么虽然已经定义了name为6个char元素的数组,但仍然能容纳10个输入,多出的那几个元素存储在哪里??
2 回复
#2
中学者2008-04-19 12:26
越界操作, 不安全.. 数组会退化(即隐式转换)成指针, 所以可以在分配的那块线性内存中访问,你定义的数组的内存是该线性内存的子区间.
#3
faint路漫漫2008-04-19 12:31
谢谢解答`~~~
1