#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英文版



 
											





 
	    

 
	