首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-15 
C++中指针数组问题intmain(){vector stringsvecstringstr//输入vector元素cout Enterstrings:(Ctrl

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

热点排行