首先这是一道牛客网的初级c语言试题
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char y[10]="ntse"
char*x=y;
n=strlen(x);
*x=x[n];
x++;
printf("x=%s,",x);
printf("y=%s\n",y);
return 0;
}
解题方法:
首先理解x是一个指向y[0}的指针 下一步n=strlen(x) strlen求的是长度而非所占字节的大小 ntse很显然是4 所以这里的n是4.
下一步我们把x[n]的值赋给了*x 此时x还是指向首元素的也就是“n” 而x[n}是“\n"
这个时候我们的已经被改写成了“\ntse"
下一步x++ 即x现在指向的是y[1]也就是“s”
下一步打印x就会打印出tse
而y还会从头开始打印但因为y[0]是“\n" 所以直接停止打印
最后打印的就什么都没有了