一个语法问题
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单步调试的时候,就是错误的,其中出错点在红色标志的地方