一个语法问题

xlhnuaa 2012-07-01 10:55:27
p1和p2是char*指针,语句*p1++==*p2++,是比较后p1,p2自增,关键是如果*p1!=*p2比较后还会自增吗?我在VC6.0编译环境中运行,的确是先比较后自增,且不管相等与否都会自增的!但是在单步调试的时候又会出问题,原始的程序如下:
const char* StrStr(const char* strdst,const char* strsrc)
{
assert(strdst&&strsrc);
const char* p1=strdst,*p2=strsrc;
char r1,r2;
while(*p1!='\0')
{
while(*p1++==*p2++);
r1=*p1;//这是为了验证语法
r2=*p2;
if(*(--p2)=='\0') //错误
{
return(--p1);
}
else
{
p2=strsrc;
p1=++strdst;
}

}
return NULL;

}

void main()
{
char* a="fert1233dfdfds",*b="233";
cout<<StrStr(a,b)<<endl;

}
这个程序有整个运行是正确的,但是我按F5单步调试的时候,就是错误的,其中出错点在红色标志的地方
...全文
45 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlhnuaa 2012-07-01
  • 打赏
  • 举报
回复
这个功能是从字符串strdst中寻找strsrc第一次出现的位置。
[Quote=引用 1 楼 的回复:]

引用楼主 的回复:
p1和p2是char*指针,语句*p1++==*p2++,是比较后p1,p2自增,关键是如果*p1!=*p2比较后还会自增吗?我在VC6.0编译环境中运行,的确是先比较后自增,且不管相等与否都会自增的!但是在单步调试的时候又会出问题,原始的程序如下:
const char* StrStr(const char* strdst,const char* strsrc)
{……
[/Quote]
N0bug 2012-07-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
p1和p2是char*指针,语句*p1++==*p2++,是比较后p1,p2自增,关键是如果*p1!=*p2比较后还会自增吗?我在VC6.0编译环境中运行,的确是先比较后自增,且不管相等与否都会自增的!但是在单步调试的时候又会出问题,原始的程序如下:
const char* StrStr(const char* strdst,const char* strsrc)
{
assert(strd……
[/Quote]
跪服 你这样写有什么意义

64,631

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧