请问各位这个问题出在哪

img


请问各位,这个哪里出了问题,为什么用变量n去限定长度会出错
附源代码:
#include
#include
using namespace std;
int main()
{
int i=1;
int n;
cin>>n;

string *p=new string [n];
while(i<=n)
{
    cin>>p[i];
    i++;
}
i=1;
while(i<=n)
{
    cout<<p[i]<<" ";
    i++;
}
 delete []p;
 return 0;

}#include
#include
using namespace std;
int main()
{
int i=1;
int n;
cin>>n;

string *p=new string [n];
while(i<=n)
{
    cin>>p[i];
    i++;
}
i=1;
while(i<=n)
{
    cout<<p[i]<<" ";
    i++;
}
 delete []p;
 return 0;

}

数组的下标应该从0开始,n个长度的数组下标应该是0~n-1,你可以尝试将i初始化为0,并且while的条件改为小于n