#include<stdio.h>
int main(){
int n;
char y[10]="abcde";
char* x=y;
n=strlen(x);
//printf("%d\n",n);
*x=x[n];
x++;
printf("%s\n",x);
printf("%s\n",y);
return 0;
}
输出结果为:
bcde
结果分析:
char* x=y;x为指向y的一直指针,x中存放的是y的地址。
n=strlen(x);求得的是y的字符的长度为5
*x=x[n];将x指向的y的第一个字符赋值为'\0';此时即数组y的第一个字符为'\0';
x++;即x=x+1;,赋值之前x指向数组y的首地址,赋值之后,x指向y首地址后面的地址,即指向了b所在的内存单元。
所以当输出x的时候会从b一直输出直到碰到'\0';
输出y的时候,由于第一个字符为'\0';故没有内容输出。
不知道这样分析对不对?