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

下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%dn",strlen(strcpy(p,"ABCD")
为什么不是7."abcABCD"?急
欧洲的kk历史 1年前 已收到1个回答 举报

-谭大王- 幼苗

共回答了21个问题采纳率:95.2% 举报

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++)!=''); //[4]
return strDestCopy;
}

函数把‘’也拷贝进去了的,而strlen也是取得‘’之前的

1年前 追问

8

欧洲的kk历史 举报

p+=3不是使指针指向了第三个c后面,那复制不是应该从c之后开始复制吗?

举报 -谭大王-

p+=3之后,*p应该就是指向defgh了,复制之后变成ABCD
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.054 s. - webmaster@yulucn.com