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

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个回答

/* 这么写能理解了么 ?
你声明的是个指针数组
第一个打印,例如: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
    };

d2262272d
潇潇-易水 回复我说爱人啊cium: 前面半截的理解大概是对的吧,你整的我有点迷了,不加const也是能编译通过的啊,加了const只是声明了test内容不可更改,比如const i= 0; i = 1; 这样就是错误的
一年多之前 回复
Isaymylover
我说爱人啊cium 回复潇潇-易水: 是不是这个东西当后面被初始化为字符串后,test[i]这个五个指针中就储存了 这五句话的地址,也就是为什么前面不加const编译不通过的原因对叭 (我有点菜,刚学到这里,有点迷,很麻烦你了,抱歉啊)
一年多之前 回复
d2262272d
潇潇-易水 回复我说爱人啊cium: 五个汉字?跟指针有啥关系, 这五个汉字是被写在内存中了 ,然后test是个指针 ,指向了它
一年多之前 回复
Isaymylover
我说爱人啊cium 等于说我 声明的那个 里面 的五个汉字 就是 ''五个指针的名字'' 对叭?
一年多之前 回复
Isaymylover
我说爱人啊cium thank
一年多之前 回复

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

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

Isaymylover
我说爱人啊cium 谢谢啊,准备先去看看输入输出 我是visual studio2017下编译的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐