又是一个小的问题
main()
{
char str[]="xyz",*ps=str;/*定义一个字符串"xyz",定义一个字符型指针*ps指向str数组的首地址。*/
while(*ps) ps++;/*判断指针所指的对象(字符)是否为结束标记,即字符中'\0',不是则指针下移。该句的作用就是让指针指向字符数组的最后一个字符'\0'。*/
for(ps--;ps-str>=0;ps--) puts(ps);/*从最后一个字符 (不是'\0',是'z')开始输出。第一次循环指针指向'z',从'z'开始输出z和'z'之后的字符'\0',然后指针自减,指向'y';第二次,从'y'了开始输出'y','z','\0'。即"yz",然后指针自减,指向'x';第三次,从'x'开始输出'x','y','z','\0',即"xyz",然后指针自减;第四次因为ps-str<0退出循环。*/
}
每次循环,puts()会自动回车。
因此结果:
z
yz
xyz