while(*t++),++优先级高于*,但++在后,因此是使用完t后再++。*t先指向变量取值,之后指针t后移。fun函数计算的就是t相对于p的位移,结果肯定是3了。
# include <stdio.h> int fun(char *p) { char *t=p; printf("t=%#x\n",t); while(putch(*t++)) printf(" t=%#x *t=%c\n",t,*t); printf("t=%#x\n\n",t); return(t-p-1); } main() { printf("%d\n\n",fun("abc")); getch(); }输出结果: