Isaymylover
我说爱人啊cium
采纳率66.7%
2019-03-06 12:12 阅读 896

关于指针数组输出时如何显示分别显示 地址,元素,

const char* test[5] =
{
"帅气的小伙.",
"漂亮的美女.",
"优秀的小伙.",
"怎么说呢...",
"优秀的小牛."
};
for (int i = 0; i < 5; i++)
{
cout << test[i] << endl;
cout << **(test[i]) << endl; //这里的解除引用符号只有一个 不知道为什么一个不显示,两个就多一个
}
test是一个指针数组
1.但为什么第一个输出会输出 元素内容而不是输出地址 **
2.第二个可以运行 证明 tset[i]是指针 (就让我很疑惑为什这么明明是指针但第一个为什么输出的不是地址)
3.第二个为什么解除引用后 会输出 空 白啊
求大佬抱

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    d2262272d 窝米逗佛~ 2019-03-07 11:04
    /* 这么写能理解了么 ?
    你声明的是个指针数组
    第一个打印,例如:i= 0 打印的是 test 的第 0 号元素的内容 
    第二个吧  写法好像不对  语法有问题样   &*(test[i])   这么写才对吧,  &*(test[i]) == test[i]  
    你再百度了 指针数组详细的看看吧
    */
    const char* test[5]    == const char test[ 5 ][20]  
    
        const char test[ 5 ][20] =
        {
            "帅气的小伙.", // 0
            "漂亮的美女.",  // 1
            "优秀的小伙.",  // 2
            "怎么说呢...",  // 3
            "优秀的小牛."   // 4
        };
    
    
    点赞 评论 复制链接分享
  • qq_29011249 小曹哥儿 2019-03-06 13:04

    输出元素地址你试试&test[i],&是取地址的意思。

    点赞 评论 复制链接分享
  • IDispatchwang IDispatchwang 2019-03-09 15:13

    1、这个是因为cout << char * 就是会输出字符串内容而不是地址,这个函数就是这么定义的。
    2、这个应该通不过编译的,不知道你的在哪个环境下可以运行,我用window64 + g++通不过。
    3、如果要输出一个变量的地址可以用&,比如&test或者&test[i],&test会等于&test[0]。

    点赞 评论 复制链接分享

相关推荐