一道C++小题目,求解答

img


标答是B,不知道咋来的,代码打在vs上还有一个错误也不知道为啥

这函数就是计算字符串长度啊
while循环判断t有没有指向字符串结束符,如果是就结束,这时候t指向字符串结束符。字符串结束符的位置减去字符串开头位置,结果就是字符串字符的数量,也就是长度

这相当于计算字符串长度。
如果不知道建议了解一下指针和c语言字符串。
至于你运行出错写成这样就好了
cout<<fun((char*)"Hello");
这是c++后来规定的不这样转换下,会产生歧义

用VS敲的代码,利用调试过程,可以清楚的知道有趣的东西!

#include <iostream>
using namespace std    ;
int fun(char *s);
int main( )
{
    cout <<fun("Hello");
    system("pause");
    return 0;
}
int fun(char *s)
{
    char *t = s;
    while(*t!='\0') t++;   
    return (t -s);
}

调试截图:
第一步调试:

img


第二步调试:

img


第三步调试:

img


第四步调试:

img


第五步调试:

img


最后一步调试:

img


由此可以看出是B,结果是5!