C++中指针数组问题
int main()
{
vector <string> svec;
string str;
// 输入vector元素
cout < < "Enter strings:(Ctrl+Z to end) " < < endl;
while (cin > > str)
svec.push_back(str);
// 创建字符指针数组
char **parr = new char*[svec.size()];
// 处理vector元素
size_t ix = 0;
for (vector <string> ::iterator iter = svec.begin();
iter != svec.end(); ++iter, ++ix) {
// 创建字符数组
char *p = new char[(*iter).size()+1];//string类型支持.size()方法
// 复制vector元素的数据到字符数组
strcpy(p, (*iter).c_str());
// 将指向该字符数组的指针插入到字符指针数组
parr[ix] = p;
}
// 输出vector对象的内容
cout < < "Content of vector: " < < endl;
for (vector <string> ::iterator iter2 = svec.begin();
iter2 != svec.end(); ++iter2)
cout < < *iter2 < < endl;//迭代器输出时候需要解引用
// 输出字符数组的内容
cout < < "Content of character arrays: " < < endl;
for (ix =0; ix != svec.size(); ++ix)
cout < < parr[ix] < < endl;//???输出一个指针即输出这个指针所指的内容???????
// 释放各个字符数组
for (ix =0; ix != svec.size(); ++ix)
delete [] parr[ix];
// 释放字符指针数组
delete [] parr;
return 0;
}
代码如上,划问号的地方是问题,如果我输入的字符串为:a,b,c,CtrlZ,然后输出Content of character arrays的时候输出的是parr[ix],它应该是一个指针阿……但VS2005下输出的是a,b,c,而且如果把代码改成*parr[ix]的话还是输出a,b,c,十分不理解,第一次输出应该是一个指针,不应该是字符串阿?达人求解
------解决方案--------------------
对char*的指针是这样的
char a[] = "hello world ";
cout < < a < < endl;
int b[] = {1, 2, 3, 4, 5};
cout < < b < < endl;
结果:
hello world
0xXXXXXX ---> 数组b首地址