谁能帮我解释一下这个问题?

leboc 2008-11-09 04:08:55
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> vst;
string a;
while(cin>>a)
vst.push_back(a);
char **pr=new char*[vst.size()];//_______________________这里_____________________
size_t ix=0;
for(vector<string>::iterator iter=vst.begin();iter!=vst.end();iter++)
{
char *p=new char[(*iter).size()+1];//____________________这里______________
strcpy(p,(*iter).c_str());
pr[ix]=p;//_____________________________这里既然赋予地址了__________________
ix++;
}

delete []pr;
return 0;
}

为什么要申请两个空间?
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
elegant87 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xhs_lh04 的回复:]
二维数组
第一个new分配了vst.size()大小的数组,第个数组元素用来存放指向字符串的指针
第二个new分配了字符串数组,并将此指针赋给了上面分配的数组中的下标为ix的元素
[/Quote]
正解!
lzp765 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangkunhenry 的回复:]
引用 2 楼 hqin6 的回复:
C/C++ code二级指针,已经说了啊!!

char **pr=new char*[vst.size()];
pr先用new申请空间以便能存vst.size()个字符串

char *p=new char[(*iter).size()+1];
再用new申请空间以便每个字符串空间能存[(*iter).size()+1个字符
[/Quote]
up
yangkunhenry 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hqin6 的回复:]
C/C++ code二级指针,已经说了啊!!
[/Quote]
char **pr=new char*[vst.size()];
pr先用new申请空间以便能存vst.size()个字符串

char *p=new char[(*iter).size()+1];
再用new申请空间以便每个字符串空间能存[(*iter).size()+1个字符
太乙 2008-11-09
  • 打赏
  • 举报
回复
二级指针,已经说了啊!!
xhs_lh04 2008-11-09
  • 打赏
  • 举报
回复
二维数组
第一个new分配了vst.size()大小的数组,第个数组元素用来存放指向字符串的指针
第二个new分配了字符串数组,并将此指针赋给了上面分配的数组中的下标为ix的元素

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧