#include<stdio.h>
#include<string.h>
void main()
{
char b1[8]="abcdefg";
char b2[8];
char* pb=b1+3;
while(--pb>=b1)
{
strcpy(b2,pb);
}
printf("%d\n",strlen(b2));
}
结果为 7
因为当拿到pb的地址后, 从pb指向的字符串当中的元素开始,向后面打印 直到"\0"终止打印。
pb的第一次指向的是 d 的地址,在while循环中 先减减,之后pb指向的是 c 的地址,所以,从c开始进行字符串的复制。
调试如下:
开始进入while循环,
whlie第一次循环,
相当于把b1中的元素全部复制到b2当中。
(我是这样认为的)