指针问题

[复制链接]
查看11 | 回复2 | 2008-6-7 09:05:27 | 显示全部楼层 |阅读模式
char *get_substr(char *sub, char *str)//返回指向子串的指针
{ char *p, *p2, *start;
for(int t=0; str[t]; t++)
{ p = &str[t];
//重置指针
start = p;p2 = sub;

while(*p2 && *p2==*p) { p++;p2++;} //查找子串位置
if(!*p2)return start;
//返回子串的头指针
}
return 0;
//如果未找到,返回空指针
}
中?????while(*p2 && *p2==*p) { p++;p2++;} //查找子串位置
?????是什么意思!能不能说清楚点!

回复

使用道具 举报

千问 | 2008-6-7 09:05:27 | 显示全部楼层
while(*p2 && *p2==*p) { p++; p2++;}该循环功能是当子串的当前字符不是结束符'\0'并且该字符与主串当前字符相等时,各自指针自加以指向下一字符继续这一循环进行比较,直到子串的当前字符遭遇结束符'\0'(表明找到相同子串)或两字符不相等(表明主串此次比较失败须回到for循环后移一个字符进行下一次子串比较)。下一句if(!*p2) return start是判别前边while循环是否是由于子串的当前字符遭遇结束符'\0'而结束的如是则找到,直接返回主串中找到的子串的头指针。
回复

使用道具 举报

千问 | 2008-6-7 09:05:27 | 显示全部楼层
while(*p2 && *p2==*p) { p++; p2++;} 也就是说(p2和p为真)就P++;p2++;直到p指向了NULL 就退出循环重点是p*p2==*p这是这道题的重点p不错移动
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行