c语言问题 来来来

来源:百度知道 编辑:UC知道 时间:2024/05/19 08:59:35
char *p="abcdefgh";
p=p+3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
这题答案为什么是ABCD 呢么*p里面的呢值去哪了

开始*p="abcdefgh",p指向字符串abcdefgh\n,p的内容就是a的地址(指针的实质就是一个地址)。

p=p+3,p向后移动3个单位,其内容是d的地址。此时p所指向字符串defgh\n;
在执行strcpy(p,"ABCD"),字符串复制,就是把ABCD\n;复制到defgh\n;目标参数以前的内容被覆盖掉,就变成了ABCD\n\n;

最后在执行strlen,就是求字符串的长度。

懂了吗?

p=p+3.。。那么p现在指向d,然后把ABCD复制给p指向的字符串,所以原来的字符串就编程了abcABCD。。。要注意现在p是指向A的,所以就是ABCD,长度是4

由于*p="abcdefgh" p指针指向a 字符串abcdefgh'\0'
p=p+3 p指针指向d
strcpy(p,"ABCD") 使字符串 变成abcABCD'\0''\0' p指针指向A