| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 364 人关注过本帖
标题:不懂我就问 请大家帮忙`~~
只看楼主 加入收藏
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
快速回复:不懂我就问 请大家帮忙`~~
数据加载中...
 
   



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

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