new的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:03:29
#include<iostream.h>
int main()
{
int n,i;char (*p)[5];
cin>>n;
p=new char[n][5];
for(i=0;i<n;i++)
{
cin.getline(p[i],4);
}
for(i=0;i<n;i++)
{
cout<<p[i];
cout<<'\n';
}
return 0;
}
为什么我输入一个n 最后输出的字符串只有n-1个 比如我输入n是2 然后我输入abcdefghij它只输出abcd
改成3就是输出abcd
efgh

#include<iostream.h>
int main()
{
int n,i;char (*p)[5];
cin>>n;
cin.ignore(); //取走输入流中的一个字符
p=new char[n][5];
for(i=0;i<n;i++)
{
cin.getline(p[i],4);

}
for(i=0;i<n;i++)
{
cout<<p[i]<<endl;
//cout<<'\n';
}
delete []p;
return 0;
}

不知道你声明指针数组的方法是否可以运行
我一直都没有使用过这种方式
就我认为一般的步骤都是先声明指针数组 然后分别给数组中每个元素分配空间 你所写的程序很有可能并没有按照你设想的那样运行 它最后创建的很可能是一个5行n列的字符数组
我将你的程序改了一下:
#include<iostream>
using namespace std;
int main()
{
int n=0,i=0;
char* p;
cin>>n;
p=new char*[n];
*p=new char[5];
for(;i<n;i++)
{
cin.getline(p[i],5);
}
for(i=0;i<n;i++)
{
cout<<p[i]<<endl;
}
return 0;
}
因为条件原因我没有运行,你可以尝试着编译一下