C++中两道无法理解的题

来源:百度知道 编辑:UC知道 时间:2024/05/25 09:19:20
1.一下函数的返回结果是(A )
int function(char* x)
{
char* p=x;
while(*p++);
return(p-x-1);
}
A 求字符串的长度 B 将字符串x连接倒字符串p后面
C 将字符串x复制倒字符串p中 D 将字符串x反向存放
2.设有如下函数定义
intf(char* s)
{
char *p=s;
while(*p!='\0')p++;
return (p-s);
}
在主函数中用cout << f("good")调用上述函数,则输出结果为(B)
A 3 B 4 C 5 D 6
小弟感觉这两个题一模一样啊,杂就得出两个不同的答案哦,想了好久没
明白,麻烦大家帮帮忙!谢谢!

第一题是这样的:x指向字符串的首字母,然后将X的首地址赋给P,P不断往前走,直到指向为空,最后返回P-X-1就是其字符串的长度了。(-1是因为P指向了空的地方。)
第二题中检测到P为空就不往前走了,所以P没有指向空。返回的P-X就是实际字符串的长度。
我的C++也学的不是很好,但是我们可以多多交流学习。QQ842219080

这两个是一样。不知你何以得出不同的答案,我试的两个调用没有不同之处。如果有可能不同,也是你的编译器的问题,你试着把第一个改为
int function(char* x)
{
char* p=x;
while(*(p++));
return(p-x-1);
}
看吧。
我用vc6,确实没问题。

如果用在程序中的话输出肯定是一模一样的撒。

答案不同关键是问题都不一样嘛。。

其实答案是一样的,第一题A求字符串的长度 和第二题的B是一样的.

只不过说法不同,字符串长度大家都是4

答案如下:
1.A
2.B
两个函数实现的都是求字符串长度.还有什么不明白的就说清楚哪里不明白,我也好有针对性回答.