| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1239 人关注过本帖
标题:碰到一个奇怪的问题,希望能在这里找到答案-->soft_wind转移
取消只看楼主 加入收藏
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
 问题点数:0 回复次数:7 
碰到一个奇怪的问题,希望能在这里找到答案-->soft_wind转移

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
char *a[5]; //最初申明的数组指针
int n;
cout<<"请输入字符串数目:";
cin>>n;
cout<<"请输入"<<n<<"个字符串:"<<endl;
for(int i=0;i<n;i++)
{
a[i]=new char[10]; //分配10个字符的输入空间,这里可以视情况自己改 ;
cin>>a[i];

}
for(i=0;i<n;i++)
{
cout<<a[i]<<endl; //观察输入数据的输出情况;
}
for(i=n-1;i>-1;i--)
{
delete []a[i]; //释放内存空间;
}
return 0;
}

这样的程序会出现个问题是 比如此程序目前声明的数组指针是5 (PS:2以上都可以) 的,你如果输入6个及6个以下的字符串( PS:即 当输入字符串小于等于 n+1) 是不会报错的,但是你声明的数组指针是1的话(PS: char *a[1]; 那么你输入的N=2的话并且输入字符串,就会报错。 这个与前面的 能输入N+1个字符串的结论就有矛盾了 )

我想此问题应该是属于空间声明的再分配问题,但是为什么n+1的情况在为1的时候就不成立?
想不明白。。。。。



以下是一个更奇怪的问题,以上的问题我只要加一个string 的声明,上面的问题就都没有了,而且就我所能输入的最大范围,都不会报错
搜索更多相关主题的帖子: soft wind int include std 
2006-08-07 10:26
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
char *a[5]; //最初申明的数组指针

string s; //注意这里,只是声明(分配了空间)。但是不明白为什么S的空间怎么可以对char *a[5]照成影响。。。。。。

int n;
cout<<"请输入字符串数目:";
cin>>n;
cout<<"请输入"<<n<<"个字符串:"<<endl;
for(int i=0;i<n;i++)
{
a[i]=new char[10]; //分配10个字符的输入空间,这里可以视情况自己改 ;
cin>>a[i];

}
for(i=0;i<n;i++)
{
cout<<a[i]<<endl; //观察输入数据的输出情况;
}
for(i=n-1;i>-1;i--)
{
delete []a[i]; //释放内存空间;
}
return 0;
}


Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-07 10:28
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 
我是公司的机器

CPU:AMD 3000+
操作系统:MS windows2000 pro
编译环境:VC6.0英文版

Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-07 10:31
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 

望帅哥美女赐教,谢谢

[此贴子已经被作者于2006-8-7 10:32:13编辑过]


Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-07 10:31
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 


还望不吝赐教


Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-07 14:40
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 


我知道怎么改,我只是想问下:为什么加个 string就能解决一切问题? 到底是为啥?不明白不了解。。。。。

Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-08 20:24
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 


或许机器和编译器存在差异,结果可能都不一样吧:)我只是觉得奇怪,为什么加上string就没有问题了。

不过像这样的错误,要是放在稍大点的程序里面。在我的机器上可能就找不到这个BUG了

Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-09 08:24
NEW5945
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-11-3
收藏
得分:0 
是越界了

我是想问问你们有没有把添加了string的版本测试下?

看看是否仍然会报错。。。。。如果实际操作后仍然有问题的话,那么就真的是我的机器的问题了。

Q号:124606779 Q群:6797073 爱闲逛的人.......
2006-08-10 08:27
快速回复:碰到一个奇怪的问题,希望能在这里找到答案-->soft_wind转移
数据加载中...
 
   



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

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