void main()
{
char s[100]="hello";
char *t;
t=(char*)malloc(100);
strcpy(t,s);
}
或者,我们可以将s
分配给t
,如下所示:t=s;
。使用替代方案的缺点是什么?
答案 0 :(得分:5)
当使用像t = s这样的简单赋值时,你实际上并没有复制字符串,而是指使用两个不同名称的相同字符串。
答案 1 :(得分:1)
如果您分配t=s
,则应用于t
指向的内存块的每个更改都会影响s
,这可能不是您想要的。
另外,您可能需要查看this post。
答案 2 :(得分:1)
变量t
的值是一个或多个连续char
的位置。当您执行t = s
时,您将字符s[0]
的位置复制到t
(并替换来自t
的{{1}}的旧值)。 malloc()
和t[0]
现在指的是完全相同的字符 - 通过另一个字符可以看到修改字符。
使用s[0]
时,您将实际字符从一个位置复制到另一个位置。
前者就像把两个门牌号放在同一栋房子里。后者就像制作一个房子里所有家具的精确复制品并将其放入第二个房间。
答案 3 :(得分:0)
strcpy()
函数用于将一个字符串复制到另一个字符串,你在这里误用了它。当使用指针时,你可以很容易地完成它,如,
t=s;
指针't'获取字符串's'的基地址,这就是指针的用途。另一方面,strcpy work.You指针存储整个字符串。