C语言中strcpy函数的第一个参数不能是字符指针吗?

2025-01-08 00:21:48
推荐回答(3个)
回答1:

strcpy(string1,string2);
是把第二个字符串写到第一个字符串的地址上,从而代替第一个字符串,实现字符串复制的作用。
这就要求第一个字符串string1是能够改写的!
我们看一看你定义的第一个字符串char *p="1234567";,这个语句首先建立一个字符指针p,再在常量区建立一个字符串“1234567”(注意常量区的数据是不能改写的),然后把首字符'1'的地址赋值给p。
这样建立的字符串p(它只能存放一个地址),只能把所谓的p字符串读出来,而不能往里写字符或修改,因为它的字符们都在常量区呢。
所以,系统无法写入p地址的内存中,造成复制不成功。
因此,strcpy()函数的第一个参数不能使用字符指针。类似的情况还有strcat函数。

回答2:

象char *p="1234567"这种字符串指针指向的是字符串常量, 常量不能被修改,所以不能象你上面那样来写,需要改为char p[]="1234567";
注:也因为同样的原因,所以象
char *p="1234567";
p[0]='A'; 或者 *p='A'
这种也都是不行的

回答3:

p指向的是常量字符串,不可修改