如图while那一行,应该是先++,再赋值,判断不等于零,再进行下一步,还是先判断(*pchb=*pcha)不等于0,再++
还是先判断(*pchb=*pcha)不等于0,再++
因为++优先级高于*,所以先结合++,因为是后缀++,所以不会立即改变值,而是先执行(*pchb=*pcha)赋值操作,然后进行++的赋值部分操作,最后利用赋值后的值与\0判断
*p++是p的地址对应的变量++而不是地址++
地址++的写法是 p++ 就可以了。
另外,既然你也知道,这么写让人费解,那么就不要这么写
程序是写给人看的,而不是写给机器看的。
是先判断(*pchb=*pcha)不等于0,再++,这是前置自增和后置自增的问题,比如说:
int a=1;
cout<<"a="<<a<<endl; //a=1
cout<<"a="<<a++<<endl; //a=1,这是后置自增,是在输出之后才自增
cout<<"a="<<a<<endl; //a=2,因为上一步输出之后自增了,所以是2
cout<<"a="<<++a<<endl; //a=3,只是前置自增,即先自增,再输出,所以直接输出3
指的是两个指针的字符先赋值,然后再判断,然后再++