c++ 简单的题9

来源:百度知道 编辑:UC知道 时间:2024/07/08 19:30:36
19. 下面函数的功能是:(A)
int fun(char *x)
{
char *y=x;
while(*y++){};
return y-x-1;
}
A. 求字符串的长度
B. 求字符串存放位置
C. 比较两个字符串的大小
D. 将字符串x连接到字符串y后面
- -||||。。
这上面有答案的。。
我不是要答案
我是要解释

int fun(char *x)
{
char *y=x;
while(*y++){};
return y-x-1;
}
char *x 是指向string的指针。
char *y=x;将x的首地址赋给指针y
while(*y++){}; *y++ 依次取出y指向的地址的内容,每次取出后y下移一个地址位置,判断是否为有效值(while(在此判断))。y移到最后一个char的地址后一个地址,*y返回\0,while()的判断条件为否,跳出循环,但y依旧向下移动一个地址位置。

假设x指向的初始地址是2004,是一个有5个字母的string的首地址,由于一个char占1个byte,则y指向的初始地址也是2004,当y指向2009时,返回\0,并再向下移动到指向2010。y - x指y与x指向的地址位置之差,此时为6
所以y - x - 1 值为5,即求字符串的长度
选A

A

D

B

#include <iostream.h>
int fun(char *x)
{
char *y=x;
while(*y++){};
return y-x-1;
}
void main()
{ int y;
char *str=0,a[100]={0};
cin>>a;
str=a;
y=fun(str);
cout<<endl<<y;
}
这个就是答案最好的解释