标题:不懂我就问 请大家帮忙`~~
只看楼主
faint路漫漫
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-4-18
 问题点数:0 回复次数:2 
不懂我就问 请大家帮忙`~~
#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个输入,多出的那几个元素存储在哪里??
2008-04-19 12:16
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
得分:0 
越界操作, 不安全.. 数组会退化(即隐式转换)成指针, 所以可以在分配的那块线性内存中访问,你定义的数组的内存是该线性内存的子区间.

樱花大战,  有爱.
2008-04-19 12:26
faint路漫漫
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-4-18
得分:0 
谢谢解答`~~~
2008-04-19 12:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-209912-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.135307 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved