关于strcpy函数

来源:百度知道 编辑:UC知道 时间:2024/06/15 20:20:56
若有定义:char *x="abcdefghi";,以下选项中正确运用了strcpy函数的是
A)char y[10]; strcpy(y,x[4]); B)char y[10]; strcpy(++y,&x[1]);
C)char y[10],*s; strcpy(s=y+5,x); D)char y[10],*s; strcpy(s=y+1,x+1);
弄不懂了,希望哪位能给出答案并给出详细的解释,谢谢!

strcpy的实现是这样的

char* strcpy(char *des, const char *src){
...//判断参数有效性
char *temp = des;
while(*des++ = *src++)
;//空语句
return temp;
}

所以结论:
A 错,x[4],不是char *
B 错,应为y是一个数组的名字,是个指针常量,不能自加
C 错,但就strcpy的参数来说,是没错的。
只是复制过程中,当s在完成y[5]-y [9]的复制后,会指到后面的空间,
继续复制,这是相当危险的!
D 对。