#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;
}
我想此问题应该是属于空间声明的再分配问题,但是为什么n+1的情况在为1的时候就不成立?
想不明白。。。。。
以下是一个更奇怪的问题,以上的问题我只要加一个string 的声明,上面的问题就都没有了,而且就我所能输入的最大范围,都不会报错
#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;
}
机器及软件环境
CPU:AMD 3000+
操作系统:MS windows2000 pro
编译环境:VC6.0英文版