C++高手请进
这是一个求字符串长度的函数,高手请再每行后面加个注释,越详细越好谢谢了~~~~~~~~~~~!!!!!!!!!!!!!voidstring::set_contents(c...
这是一个求字符串长度的函数,高手请再每行后面加个注释,越详细越好 谢谢了~~~~~~~~~~~!!!!!!!!!!!!!
void string::set_contents(char *p)
{ int i=0;
contents=p;
while(*p++!='\0')
i++;
length=i;
} 展开
void string::set_contents(char *p)
{ int i=0;
contents=p;
while(*p++!='\0')
i++;
length=i;
} 展开
5个回答
展开全部
这应该是一个类的成员函数。
而且可能是重构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类的成员函数,表示长度
}
而且可能是重构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类的成员函数,表示长度
}
展开全部
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 记录字符串的长度
}
{ int i=0;
contents=p; //contents没看出来有什么用
while(*p++!='\0') /*这句可以分开来看,先看*p != ‘\0’如果*p的值不
为‘\0’,意思是当前的值如果不为空,继续执行下面的语句,如果为空,跳出循环。判断完后,p ++,就是地址加1。*/
i++;
length=i; //length 记录字符串的长度
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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。
这是函数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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
函数结束
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
函数结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你写的这段代码有问题,下面我用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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询