void getstring(char *a[], int n)
{
char *p = new char[];
for (int i = 0; i < n; i++)
{
cin >> p;
a[i] = p;
}
}
与下面的这段代码
void getstring(char *a[], int n)
{
for (int i = 0; i < n; i++)
{
char *p = new char[];
cin >> p;
a[i] = p;
}
}
结果:
第一段:a[i]的值为输入的最有一个值
第二段:a[i]的值为输入的值
求原因?
因为你只new了一次,而a[0]~a[n-1]都是指向这同一个区域,而p的值以最后一次输入的为准,前面的都被覆盖