24小时热门版块排行榜    

查看: 738  |  回复: 4

seu-ljc

木虫 (正式写手)

[求助] 字符型指针的疑惑已有2人参与

目前正在学指针,刚开始还能理解,到后面越来越糊涂了
以下是一个例子,困惑的地方是  既然string 是一个指向 “randy”的指针
输出的不应该是 指针本身的值么,也就是一个地址
为什么输出的是“randy”呢?
百思不得其解,求诸位大神点拨~

#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int n, char* ps[])
{
        char* string="randy";
        cout<<"the array is '"<<string<<"'"<<endl;
        cout<<"display the string as an array:";
        for (int i=0;i<5;i++)
        {
                cout<<string;
        }
        cout<<endl;
               
        cout<<"diaplay string using a pointer: ";

        char* pstring=string;
        while(*pstring)
        {
                cout<<*pstring;
                pstring++
        }
        cout<<endl;
        system("pause" ;
        return 0;

}

字符型指针的疑惑
QQ Photo20140609211712.jpg
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jcy879100620

木虫 (初入文坛)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
seu-ljc: 金币+3, 有帮助 2014-06-20 16:41:10
貌似字符指针中插入运算符被重载过了,如果要输出地址可以试试cout<<&string。
2楼2014-06-20 16:09:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

seu-ljc

木虫 (正式写手)

引用回帖:
2楼: Originally posted by jcy879100620 at 2014-06-20 16:09:48
貌似字符指针中插入运算符被重载过了,如果要输出地址可以试试cout<<&string。

可是string不是指针么???
另外你的方法输出来的还是string。。。
anyway,感谢你的热心回答~
3楼2014-06-20 16:40:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sxu2009

至尊木虫 (正式写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
seu-ljc: 金币+3, ★★★很有帮助 2014-06-24 10:24:09
引用回帖:
3楼: Originally posted by seu-ljc at 2014-06-20 16:40:58
可是string不是指针么???
另外你的方法输出来的还是string。。。
anyway,感谢你的热心回答~...

string是指针,可它是字符型指针,此时的cout<<string相当于printf("%s",string)而不是printf("%x",string)。若想输出指针的值,可以将string强制类型转换为int *,即cout<<(int *)string。
4楼2014-06-21 23:41:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

seu-ljc

木虫 (正式写手)

引用回帖:
4楼: Originally posted by sxu2009 at 2014-06-21 23:41:47
string是指针,可它是字符型指针,此时的cout<<string相当于printf("%s",string)而不是printf("%x",string)。若想输出指针的值,可以将string强制类型转换为int *,即cout<<(int  ...

不明觉厉`
5楼2014-06-24 10:24:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 seu-ljc 的主题更新
信息提示
请填处理意见