以下函数的返回值是
int function(char *x)
{
char *p = x ; while(*p++) ; return(p-x-1) ;
}
A 求字符串长度 B 将字符串X连接到字符串p的后面
C 将字符串X复制到字符串p中 D 将字符串x反向存储
先多谢大家的热心解答!!
以下函数的返回值是
int function(char *x)
{
char *p = x ; while(*p++) ; return(p-x-1) ;
}
A 求字符串长度 B 将字符串X连接到字符串p的后面
C 将字符串X复制到字符串p中 D 将字符串x反向存储
先多谢大家的热心解答!!
int function(char *x)
{
char *p = x ;
while(*p++) ;
return(p-x-1) ;
}
这个函数以传址的方式传入一个c风格字符串x,在函数中,将p指向字符串首地址(char *p=x;),首先你要知道c风格的字符串是以'\0'结束的,它对应ascll码中的0,p++操作是将p指向下一个字符的操作,所以while(*p++)这一句,当p指向了'\0'也就是字符串结尾,此时*p正好也是0,while循环也就退出了,测试p指向字符串末尾,而x指向字符串开头,用,末尾减开头就是字符串长度,但是为什么要多减1呢,因为末尾的'\0'是不能算在长度里面的,所以要把这个多算进去的减去。