VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 747|回复: 3

C++中指针数组问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-7 17:20:01 | 显示全部楼层 |阅读模式
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,十分不理解,第一次输出应该是一个指针,不应该是字符串阿?达人求解
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-7 22:54:01 | 显示全部楼层
对char*的指针是这样的

char a[] = "hello world";
cout << a << endl;
   
int b[] = {1, 2, 3, 4, 5};
cout << b << endl;

结果:
hello world
0xXXXXXX  ---> 数组b首地址

回复

使用道具 举报

1

主题

19

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-1-8 07:45:01 | 显示全部楼层
学习,

帮你顶
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-8 11:09:01 | 显示全部楼层
子弹兄说的没错,那还有没有别的例外情况阿……我觉得C++这么设计很容易混淆
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表