VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1281|回复: 4

指向指针的指针的问题

[复制链接]
31_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-2 11:34:27 | 显示全部楼层 |阅读模式
        char name[5][10] = { "aaa","bbb","ccc","ddd","eee"};
        char *p[5];
        for (int i = 0; i < 5; i++)
                p[i] = &name[i][10];
        for (int i = 0; i < 5; i++)
                cout << *(p+i) << endl;
        cout << endl;

结果是:
bbb
ccc
ddd
eee
烫烫汰查6T鳸

为什么不是:
aaa
bbb
ccc
ddd
eee




上一篇:VC控件,按钮实现两种不同的输出
下一篇:有没有大神用c/c++写一个判断MBR/PBR是nt5.x还是nt6.x或以上的命令行工具?
15_avatar_middle
最佳答案
6 
online_vip 发表于 2020-12-2 12:00:59 | 显示全部楼层
指向指针的指针的问题
  1. p[i] = name[i];
复制代码

帖子很难发出去啊指向指针的指针的问题,不打几个字不行
75_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-2 22:06:57 | 显示全部楼层
先声明,我不懂 C++ ,下面的代码是根据 C 语言代码推断的,你试试:
        char name[5][10] = { "aaa","bbb","ccc","ddd","eee" };
        char *p;
        p = name[0];
        for (int i = 0; i < 5; i++)
                cout << p + 10 * i << endl;
        cout << endl;
70_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-5 00:27:32 | 显示全部楼层
额,你那个p[i] = &name[i][10],当i = 0时,p[0] = name[0][10],并且你声明的是name[5][10],那么执行完那句之后就是p[0] == name[0][10] == name[1][0]。
69_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-6 18:27:33 | 显示全部楼层
本帖最后由 小小枫 于 2020-12-6 19:34 编辑

p = &name[10];
改为
p = &name[0];
即可

你的循环,本来应该取这几个字符串的首字符的地址的。
但是因为写了[10],就取到了正确的地址再往后偏移10个字节的地址,而10个字节,就是下个字符串了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-10-19 05:31

Powered by CcTry.CoM

© 2009-2021 cctry.com

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