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.第二个为什么解除引用后 会输出 空 白啊
求大佬抱
/* 这么写能理解了么 ?
你声明的是个指针数组
第一个打印,例如: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
};
输出元素地址你试试&test[i],&是取地址的意思。
1、这个是因为cout << char * 就是会输出字符串内容而不是地址,这个函数就是这么定义的。
2、这个应该通不过编译的,不知道你的在哪个环境下可以运行,我用window64 + g++通不过。
3、如果要输出一个变量的地址可以用&,比如&test或者&test[i],&test会等于&test[0]。