已有声明"int a;char s[80]="123456";",执行语句“strcpy(s+4,"123456");a=strlen(s);”后变量a的值是

答案是10.我想不明白strcpy到底是怎么操作的
1、s+4怎么考虑?
2、s[80]最后究竟变成了什么?

s是一个内存地址,指向一个char,内容是"1",即初始字符串的第一个字符,+4代表地址的偏移,即向后四个或s[4](从0开始)。strcpy函数将串"123456"从s[4]开始往后覆盖,a最终变成“1234123456”,长度为10。strlen函数扫描到空字符"\0"(即s[10])时结束并返回10。虽然数组还未结束但strlen函数不再向后计数。
温馨提示:答案为网友推荐,仅供参考
相似回答