当前位置: 代码迷 >> C语言 >> 新手问一个问题
  详细解决方案

新手问一个问题

热度:80   发布时间:2008-02-29 12:32:29.0
新手问一个问题
#include<stdio.h>
main()
{
char b[]="ABCDEFG",*chp=&b[7];
while (--chp>&b[0])
putchar(*chp);
putchar('\n');
}
问:程序运行后的输出结果是:GFEDCB.

这里有几块不明白的地方.比如说第四行的最后的b[7],这个指的值是哪个啊?按照我的理解没有可以指向的字符啊?不应该是b[6]么?
还有第五行的b[0]指的是不是A呢?
搜索更多相关的解决方案: 五行  

----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
    char b[]={'A','B','C','D','E','F','G',0},*chp=b+7;
    while (--chp>b){
        putchar(*chp);
    }
    putchar('\n');
}
----------------解决方案--------------------------------------------------------
楼上的这个我明白~
可是我不明白的是这个:
b[0]=A
b[1]=B
b[2]=C
b[3]=D
b[4]=E
b[5]=F
b[6]=G
可是b[7]等于什么啊?
----------------解决方案--------------------------------------------------------
'\0';
----------------解决方案--------------------------------------------------------
对,指向的是空字符\0
这里吧指针大小进行比较
----------------解决方案--------------------------------------------------------
那么'0'在这个程序中是怎么运作的呢?
这个程序我不怎么明白~
请各位高手指点一下,谢谢~!1
----------------解决方案--------------------------------------------------------
回复Lz的帖子
我明白你的意思了。

    建议您重新看一遍数组那章,a[7]是从0开始算的,也就是说:
a[7]=a[0],a[1],a[2],a[3],a[4],a[5],a[6]。
a[7]表示的是里面的7个数组,而记数是从0开始的,到了数组[6]已经结束,所以这个数组和[7]一点关系也没有。a[7]是个地址,它所指向的数据是未知的,随机出现的。

我的回答也许有错误的地方,请“高手”们更正。
----------------解决方案--------------------------------------------------------
ps:
sorry!

偶没看题,所以解释有误,希望没误导您。

教大家笑话了,偶很对不起楼主,很对不起大家,更对不起我自己。
----------------解决方案--------------------------------------------------------
char b[]="ABCDEFG"
里面存有A,B,C,D,E,F,G,\0共8个字符
\0表明这8个字符被理解为字符串
*chp=&b[7];
表明chp指向b[7],即指向空字符\0
----------------解决方案--------------------------------------------------------
谢谢楼上的!
楼上的我明白~
按照前几个楼上的,在这个题中,a[7]因为没有对应的值,但是在"字符串"那章中说的结尾自动加一个'0',那么对应的就是a[7]='0'了.可是'0'是多少呢?
最近学C语言都学木了,学死了~
有时候转不过来弯了
不过还是等待非常明白的人把这道题解答一下具体的过程~
----------------解决方案--------------------------------------------------------
  相关解决方案