C++代码分析,指针方面

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:01:24
char *Strstr(const char * str1, const char * str2)
{
const char * ptr1 = str1;
const char * ptr2 = str2;
const char * result = (char*)0;
while(*ptr1 != '\0')
{
if(*ptr1 == *ptr2)
{
result = ptr1;
while(*ptr2 != '\0')
{
if((*ptr1 != '\0') && (*ptr1 == *ptr2))
{
ptr1++;
ptr2++;
}
else
{
break;
}
}

if('\0' == *ptr2)
{
return (char*)result;
}
else if('\0' != ptr1)
{
ptr2 = str2;
ptr1 = result+1;
result = (char*)0;
}
else
{
break;
}

}
ptr1++;
}
return (char*)0;
}
1.*Strstr(const char * str1, const char * str2)不是很明白
2.return (char*)0;什么意思
3.能不能大概地讲下这段代码,我看着像输出两个str相同的元素。

1.

char *Strstr(const char * str1, const char * str2)

它的含意是,函数名称是Strstr,这个函数接收两个const字符指针str1和str2,const的意义在于在这个函数内部无法通过str1和str2指针修改它们所指向的地址保存的值

函数名称前面的char *表示这个函数的返回值类型为字符指针(地址)。

2.
return (char *)0;

它的含义是先将常量0显式转换为字符指针类型的值(地址),然后返回这个地址,这样做的目的是为了和函数返回值类型一致,一般情况下,函数返回值会被隐式转换(自动转换)为返回值类型或者是兼容类型,但是有些编译器却不会进行隐式转换,用(char *)0这样的显式转换可以避免在此类编译器中编译出现的不必要的错误或者是警告信息。

3.

这个函数的作用是在str1指向的字符串中寻找str2指向的字符串,并返回寻找结果,即如果找到就返回地址,否则返回0

输入两个只读的指针地址返回一个指针地址

const 就是设置为常类型的str1 str2

return (char*)0;
是由于函数前面char *Strstr(const char * str1, const char * str2)
需要返回指针形式 所以强制转换

1.*Strstr(const char * str1, const char * str2)不是很明白
这个函数的输入是两个常量字符串指针,也就是在函数里面不会被改变。返回一个字符串指针。
2.return (char*)0;什么意思
返回一个空指针,就是NULL的意思
3.能不能大概地讲下这段代码,我看着像输出两个str相同的元素
在str1中查找str2,如果找到那么返回str1中与str匹配的首指针,如果没有找到,那么返回空指针。