看下面的测试代码:
#include<string.h>#include<stdlib.h>#include<assert.h>void inverse(char* str){assert(NULL != str);int len = strlen(str);while (*str)str++;str--;//这两注释说明,*str++和*(str++)的效果是一样的。+//++的优先级比*高/*while (*str++);str--;str--;*//*while (*(str++));str--;str--;*/while (len--){printf("%c", *str);str--;}}int main(void){char* p = "123456";inverse(p);printf("\n------");getchar();return 0;}
结果表明:
(1)*p++和*(p++)的效果是一样的,都是取*p的值,然后p++;
(2)在while判断语句中,尽管*p=‘\0’,此时仍会p++;
(3)(*p)++是先取*p的值,然后该值++;