void main(){ char a[]="abcdef",*p1,*p2,c; p2=p1=a; while(*p2) p2++; //什么意思? p2--; //这个又是? while(p2>p1){ c=*p1; *p1++=*p2; *p2--=c; }; printf("%s",a);}
明白了,非常感谢您!
首先,你得明白a[]中字符串存储的方式,如图,'\0'结尾。
而p2=p1=a,即*p2=*p1=a[0]='a',初始p2和p1都指向首字母a;
while循环就是让p2地址递增,直至*p2指向字符串结尾'\0',实际想让他指向f故再p2--;
这样就得到两个指针,p1指向首字母a,p2指向结尾字母f,下面的while循环就是首尾交换,没交换一次,p1向后移,p2向前移,直至相遇,结果就是将字符串倒置输出。
原来是这样,非常感谢您
谢谢您!