c语言指针,这个p++和p--是什么意思?

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);}

while(*p2) p2++; // 将p2移动到字符串尾,即指向结束符0
p2--; // 回移,p2指向字符串最后一个字符
代码的功能是将字符串首尾对应字符依次交换追问

明白了,非常感谢您!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-20

首先,你得明白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向前移,直至相遇,结果就是将字符串倒置输出。

追问

原来是这样,非常感谢您

第2个回答  2021-04-20
++就是指针后移,向内存地址增加的方向移动,对一个字符串来说就是指针右移。--相反追问

谢谢您!

相似回答