求解指针小程序

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:44:38
有以下程序:
main()
{
.char str[]="xyz",*ps=str;
.while(*ps) //什么意思?*ps???
.ps++;
.for(ps--;ps-str>=0;ps--)
.puts(ps);
}
执行后输出结果是(C)
A yz <Enter> xyz
B z <Enter> yz
C z <Enter> yz <Enter> xyz
D x <Enter> xy <Enter> xyz
头大了,看不明白,这个程序很小,请详细的
解释一下每一行的意思/先谢过了/

选C
main()
{
.char str[]="xyz",*ps=str; //定义数组str并赋初值,从str[3]以后各个元素值默认为0.又定义了ps为指向str[]的指针,默认指向str[0]
.while(*ps) //*ps即ps所指向单元的值,这个while循环意思就是从str[0]开始判断,如果不为0将ps的指向向后移动1个字节,最后将ps的指向指到str[3],跳出while循环
.ps++;
.for(ps--;ps-str>=0;ps--) //这个for循环执行3次,第一次输出str[2],即z.第二次输出str[1]和str[2],即yz,第三次输出str[0]~str[2].
.puts(ps);
}

while(*ps) //什么意思?*ps???

判断ps所指向的内容是不是为'\0',即判断是不是字符串的末尾。