新微赢技术网

标题: 不懂我就问 请大家帮忙`~~ [打印本页]

作者: ※为你歌唱※    时间: 2009-11-4 00:21
标题: 不懂我就问 请大家帮忙`~~
#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个输入,多出的那几个元素存储在哪里??
作者: 无敌美少女    时间: 2009-11-4 00:21
越界操作, 不安全.. 数组会退化(即隐式转换)成指针, 所以可以在分配的那块线性内存中访问,你定义的数组的内存是该线性内存的子区间.
作者: 玲珑之翼    时间: 2009-11-4 00:21
谢谢解答`~~~




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2