3人小说改编剧本:C语言字符串问题

来源:百度文库 编辑:中科新闻网 时间:2024/03/29 01:53:16
以下程序的输出结果:
#include "stdio.h"
main()
{ b=“ABCDEFG”,*chp=&b[7];
while(--chp>&b[0]) putchar(*chp);
putchar("\n");
}
“while(--chp>&b[0]) ”这里帮忙仔细讲解以下,写了!!
结果是多少啊?
--chp的最后一个字符时b[1]?

chp是指向字符数组元素的指针,使用 chp++ --可以对数组进行向前向后移动访问,而while(--chp>&b[0])
先是 运算 --chp,此时为前缀,则先自减,后使用chp,也就是说,先把chp向前移,再与b[0]的地址比较,是否在b[0]元素之前!否则执行循环!&b[0] 与b的值是一样的,

这是一个倒序输出字符数组的例子
chp是一个字符字符指针,初值为b[7]的地址,思想是通过数组地址是连续的这个原理,通过递减指针的方法找到每一个元素
while(--chp>&b[0]) ,将chp减一,也就是将指针移到前一个元素的位置上,保存相应元素的地址,与数组首地址比较,如果大于首地址,也就是说超过了数组的范围,那么指针所指的对象就不属于要输出的数组的范围了,也就不在输出,如果满足,也就是指针还在数组范围内,就通过指针引用来输出指针所指的元素

--chp是一个地址,因为在数组的地址是连续的,从chp即&chp[0]到chp+7