成都宽窄巷子哪住宿好:请教一个C语言的判断题,麻烦解释一下,谢谢!!若有语句:char *s1="string2";则

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 02:33:22
请教一个C语言的判断题,麻烦解释一下,谢谢!!若有语句:char *s1="string2";则语句strcpy("china",s1);是正确的。
为什么错误?

谁说是正确的??????
strcpy("china",s1)和strcpy(s1,"china")都是错误的,内存隐患。

strcpy("china",s1):“china”为一个字符串常量,然后将s1的内容复制到"china"所在的内存区域,相当于更改了常量区,可能会引起程序崩溃

strcpy(s1,"china"):同理,s1是指向"string2"这个字符串常量的,复制操作也是修改了常量区。

正确。
char *s1="string2" 这条语句定义了一个字符型指针s1,它指向的是字符串的首地址。strcpy(char *s1,char *s2)是字符串复制函数,其功能为将字符串s2复制到字符串s1中去。它的两个参数s1,s2必须是字符串或字符型指针。

s1是字符串数组"string2";的首地址,
strcpy其实是传递地址