【发布时间】:2017-02-07 07:54:55
【问题描述】:
char ** ptr = new char *[3];
ptr[0] = new char [5];
ptr[1] = new char [6];
ptr[2] = new char [7];
cout<<"Enter first array: ";
cin.getline(ptr[0], 5);
cin.getline(ptr[1], 6);
cin.getline(ptr[2], 7);
for (int i=0; i<3; i++){
cout<<ptr+i<<endl;
}
for (int i=0; i<3; i++){
delete[] ptr[i];
}
当我运行这段代码时,它会给出以下输出:
Enter first array: name
0xf99c20
0xf99c28
0xf99c30
我实际上希望打印出用户输入。
有人能告诉我怎么做吗?
【问题讨论】:
-
Err... 解决方法?
-
您可能想打印
ptr[i],它与*(ptr+i)相同。顺便说一句,尽管你最后一个delete[]..在一个循环中,你仍然有泄漏。首选std::string满足您的字符串需求,首选std::vector<T>满足您的阵列需求 -
1.解决什么??? 2.您需要在代码末尾
delete[] ptr。 3.你也可以声明char* ptr[3](而不是分配和删除它)。 4. 有更简单、更好和更正确的方法来做你想做的任何事情。