| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖
标题:新人自学关于字符串strstr的理解,也不知道对不对。
取消只看楼主 加入收藏
wangjiayou
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2017-6-25
结帖率:75%
收藏
 问题点数:0 回复次数:0 
新人自学关于字符串strstr的理解,也不知道对不对。
新人自学,很困惑,以下是自己本人的理解,也不知道我理解的对不对,希望大家指导下哈。环境:win8.1 VS2010

char * __cdecl strstr ( const char * str1, const char * str2 )
{
        char *cp = (char *) str1;       //要对char *str1进行指针操作,所以设置另一个指针变量*cp,指向char *str1的起始位置//
        char *s1, *s2;                    //在对char* str1和char *str2操作的时候,创建char *s1和char *s2,分别表示该两个指针上的指针变量 ///
                                          
        if ( !*str2 )                   //第一种大情况:char *str2是空指针的时候,无论char *s1是否是有效指针,都返回char *s1//
            return((char *)str1);

        while (*cp)     //第二种大情况:当char *s1是有效的指针的时候。要对char *str1进行指针操作,所以这里用指向char *str1的指针变量*cp,而不能用*str1//
        {
                s1 = cp;     //s1表示对char *str1操作时候的指针变量。不能用s1 = str1,因为char *str1是不变的,需要指向char *str1的指针变量即可///
                s2 = (char *) str2;       //s2表示对char *str2操作时候的指针变量//

                while ( *s1 && *s2 && !(*s1-*s2) )   //①当两个指针变量*s1和*s2都为真的时候,*s1和*s2两个指针变量指向的字符相同,找到了子串///
                        s1++, s2++;                   //继续寻找下一个//

                if (!*s2)       //②当*s1为真,*s2为假的时候,没找到子串。返回*str1指向的地址,即*cp。但是这里能用return str1吗?///
                        return(cp);
                cp++;              //记录找到第一对相同字符的地址,地址自增继续寻找下一对相同的字符。///
        }
        return(NULL);
}
搜索更多相关主题的帖子: char 指针 操作 变量 指向 
2018-04-25 14:12
快速回复:新人自学关于字符串strstr的理解,也不知道对不对。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015340 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved