读书人

C++中指针数组有关问题

发布时间: 2012-02-15 12:09:44 作者: rapoo

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首地址

读书人网 >C++

热点推荐