while(*ps++!='\0');和while(*ps!='\0');{ps++};有什么区别吗?
我在家课本上看到while(*ps1++!='\0');意思是指向\0的下一个,而不是\0,需要在ps1--,为什么?
写在循环里面,如果*p!='\0'就不会执行
写在while上面,无论满足不满足,都++
什么课本教你这些,这不是编程,这是杂耍
while(*ps++!='\0'); 循环结束时,ps指向了 '\0'后面的地址
while(*ps!='\0'){ps++;}循环结束时,ps指向了 '\0'这块地址
首先需要理解ps++,ps++效果等于ps = ps + 1,也就是ps指针的下一个,
同理还有++ps也等同于ps = ps + 1,那么两者有什么区别呢,ps++为先使用ps的值再执行ps = ps + 1,
++ps为先执行ps = ps + 1在使用ps的值,什么意思呢?
以你的题目为例, *ps++,首先是ps++,那么先使用ps的值,即先获得*ps的值再执行ps = ps + 1,那么*ps++
就可以分为两步,先返回*ps的值再将ps的值加1,所以while (*ps++!=0);中ps实际上已经指向了下一个值,但
循环内的判断条件还是为*ps,所以while(*ps++);是等效于while(*ps!=0) {ps++}的,那么如果while(*ps1++!='\0');
之后想让指针还是指向当前值,那么只有再执行一次ps--啦,因为ps在这之前已经指向下一个啦。