24小时热门版块排行榜    

查看: 608  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

倒计时

新虫 (初入文坛)

[求助] 求助代码

#include<iostream.h>
void main()
{
        char s[21],*ps=s;
        for(int i=0;i<20;i++)
                s='A'+i;
        s[20]='\0';
        ps++;
        cout<<"ps="<<ps<<endl;                                   //为什么这里应该输出字符数组的首地址,但实际却输出PS=BCDEFGHIJKLMNOPQRST
        ps+=2;
        cout<<"ps="<<ps<<endl;                                   //为什么这里应该输出字符数组的首地址,但实际却输出PS=DEFGHIJKLMNOPQRST
        for(ps=&s[19];ps>&s[11];ps-=2)
        {
                cout<<"*ps="<<*ps<<endl;                 
                cout<<"ps="<<ps<<endl;
        }
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

longe87

铜虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
ps在这里是一个字符指针
(1) ps++之后, 指针向后移动一个单位地址, 也就指向了 B的地址。
(2)同理, p+=2之后, ps 又移动了两个单位地址 也就指向了D的地址。
看竹何须问主人
4楼2013-11-13 07:15:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

刚子ing

银虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
倒计时: 金币+5 2013-11-14 08:40:07
char s[21],*ps=s;把char换成int型就可以了或在pss输出前加上&就可以了。char类型数组名或char数组指针cout输出是把数组从第一个元素开始逐个输出字符,直到遇到'\0'位置。与整型的数组名的输出是不相同的。
年少轻狂
2楼2013-11-12 22:08:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lenovo001

禁虫 (正式写手)

感谢参与,应助指数 +1
本帖内容被屏蔽

3楼2013-11-13 06:06:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

倒计时

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by lenovo001 at 2013-11-13 06:06:44
首先,指针ps指向字符数组s的首地址s,ps++后,指针指向s;同理,ps+=2后,ps指向s,输出就如楼主所言了!请楼主好好理解下指针的含义就能弄明白了!
...

具体再问下,地址和内容,究竟什么区别。就如这里,既然是输出地址,为什么将该地址后所有数组的内容都输出,难道这就是地址?
5楼2013-11-13 13:12:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见