请教各位大侠,给分
请大家帮我看一下这个程序,其中的st=st-len-1我不知道什么意思,谢谢
#include<iostream>
const char *st="the expense of spirit \n";
int main()
{
int len=0;
while(*st++)
++len;
st=st-len-1;
cout<<len<<":"<<st;
return 0;
}
问题点数:20、回复次数:5Top
1 楼xMars(火星虫:最简单的人工智能)回复于 2004-11-02 21:54:30 得分 0
st=st-len-1;表示把st的从某个地址开始输出Top
2 楼willko(珂http://www.willko.cn)回复于 2004-11-02 21:58:06 得分 0
这个是计算字符串长度的
当*st==NULL时退出循环,因为用的是后置++,所以要减1Top
3 楼liukang520236(【从不上CSDN的全自动智能灌水机】)回复于 2004-11-02 22:04:44 得分 0
to willko(嘿嘿) 大虾
写成
#include<iostream>
const char *st="the expense of spirit \n";
int main()
{
int len=0;
while(*st++)
len++;
st=st-len;
cout<<len<<":"<<st;
return 0;
}
这样可以吗?
Top
4 楼lynnboy(lynnboy)回复于 2004-11-02 22:12:27 得分 20
st原来指向字符串开始,后来经过循环中的st++指向了字符串结尾的'\0'。
所以如果要将st重新指向字符串开始,则需要将其向前移动整个字符串加上最后一个'\0'的长度的位置,所以需要st - len - 1Top
5 楼UPCC(杂食动物)回复于 2004-11-02 23:23:17 得分 0
st=st-len-1;
---------------------------
因为指针自加了len+1次(因为到最后条件为false时还加了一次),要把指针回到以前指向的地方需要回退len+1次。
写成
while(*st++)
len++;
是不合题意的。
指针自加一样多次,len还是一样的大。(不过当然不会内存错误),这样the 的't'会没有显示Top




