作业帮 > 综合 > 作业

下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%d\n",strle

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 08:37:24
下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")
为什么不是7."abcABCD"?急
halps 说得有道理
strcpy的实现代码
char * strcpy(char * strDest,const char * strSrc)
{
char * strDestCopy=strDest; //[3]
if ((strDest==NULL)||(strSrc==NULL)) //[1]
throw "Invalid argument(s)"; //[2]
while ((*strDest++=*strSrc++)!='\0'); //[4]
return strDestCopy;
}

函数把‘\0’也拷贝进去了的,而strlen也是取得‘\0’之前的
再问: p+=3不是使指针指向了第三个c后面,那复制不是应该从c之后开始复制吗?
再答: p+=3之后,*p应该就是指向defgh\0了,复制之后变成ABCD\0