C++高手请进

这是一个求字符串长度的函数,高手请再每行后面加个注释,越详细越好谢谢了~~~~~~~~~~~!!!!!!!!!!!!!voidstring::set_contents(c... 这是一个求字符串长度的函数,高手请再每行后面加个注释,越详细越好 谢谢了~~~~~~~~~~~!!!!!!!!!!!!!
void string::set_contents(char *p)
{ int i=0;
contents=p;
while(*p++!='\0')
i++;
length=i;
}
展开
 我来答
jmsw4bn
2010-02-09 · TA获得超过190个赞
知道小有建树答主
回答量:572
采纳率:0%
帮助的人:280万
展开全部
这应该是一个类的成员函数。
而且可能是重构string这个类。
void string::set_contents(char *p) //string成员函数set_contents类型为void
{ int i=0; //变量i初值0
contents=p; //将传递进来的字符指针类型p的值赋予contents,因为contens并没在函数中声明,所以应该是string类的一个成员变量,表示字符串的内容。
while(*p++!='\0') //p指针依次后移,知道p指向的是 \0,注意:字符串结束的标志是\0,所以为\0时,该字符串到了结尾
i++; //p后移一位,i就+1,用于计算共有多少字符
length=i;//将i的值赋予length,length在本函数中无定义,应该是string类的成员函数,表示长度
}
coolwolf79
2010-02-09 · 超过24用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:0
展开全部
void string::set_contents(char *p) //如参,一个指向char型的地址指针
{ int i=0;
contents=p; //contents没看出来有什么用
while(*p++!='\0') /*这句可以分开来看,先看*p != ‘\0’如果*p的值不
为‘\0’,意思是当前的值如果不为空,继续执行下面的语句,如果为空,跳出循环。判断完后,p ++,就是地址加1。*/
i++;
length=i; //length 记录字符串的长度
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenminfengjian
2010-02-09 · TA获得超过180个赞
知道答主
回答量:66
采纳率:0%
帮助的人:59.2万
展开全部
1、void string::set_contents(char *p)
这是函数set_contents的实现,它是类string的函数,此函数有一个输入参数(字符型指针p),没有输出 ;
2、int i=0;
此行定义了一个整数型变量,用来记录指针p指向的字符串的长度,初值为0;
3、contents=p;
这是一个指针的赋值,结果就是contents指针也指向了p指向的位置,即字符串的开头;
4、while(*p++!='\0')
i++;
这2行做了一个求字符串长度的循环。最开始p指向字符串的最前面,即第一个字符,i=0;如果第一个字符不为'\0',那么i++即i=1,同时p++指向第二个字符;如此循环直到找到字符串的最后(即找到'\0',每个字符串都是以这个结尾的),循环结束,此时p指向字符串最后,i记录了字符串的长度;
6、length=i;
这是一个赋值语句,就是将i的值传给length。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MYM光头强
2010-02-23 · TA获得超过341个赞
知道答主
回答量:594
采纳率:0%
帮助的人:82.8万
展开全部
1、
void string::set_contents(char *p)
void 返回值类型,void是没有返回值
string 这里是一个类
:: 作用域标示符
set_contents 函数名
(char *p) 参数列表,
char *p是一个char型的指针
void string::set_contents(char *p)
就是set_contents(char *p)是这个string的成员函数,返回值为空!

2、
int i=0; 这是set_contents(char *p)函数的局部变量,并初始化为0;

3、
contents应该是一个char *的全局变量,因为在函数内部没定义,要想合法,只能是全局变量!
contents=p; 这个是p赋值给这个全局变量

4、
while(*p++!='\0')
while 循环结构
*p++,*p取出p的值;这里是先取出p的值,在指向下一个字符
*p++!='\0'就是p还有值。每个字符串都是以'\0'结尾的
while(*p++!='\0') *p没指向‘\0’循环就继续执行,否则停止循环;
且每次循环i都要加1,
while(*p++!='\0')i++;
等价于
while(*p++!='\0')
{
i++;
}

5、
length应该是一个int型的全局变量,因为在函数内部没定义,要想合法,只能是全局变量!
length = i; 将i赋值给length
函数结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sparly
2010-02-09 · TA获得超过301个赞
知道答主
回答量:45
采纳率:0%
帮助的人:23.6万
展开全部
你写的这段代码有问题,下面我用C语言来写一段求字符串长度的代码

main(char *p)
/*主函数里有一个名称为 p 的指针变量*/

{ int i=0; /*定义变量 i 赋值为 0*/
char a[100]; /*定义字符型数组 "a" 长度为100 */
scanf("%s",a); /*输入字符符串,但字符串长度须小于100*/
p=a; /*把数组a[100]的首地址赋给指针变量p*/
while(*(p++)!='\0')
i++; /*循环,当指针变量指向的内容为空时循环停止,且每 循环一次 i 的值 加1*/
printf("%d",i);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式