在C中使用strcpy函数的优点

发布于 2024-10-07 03:44:56 字数 210 浏览 6 评论 0原文

void main()
{
    char s[100]="hello";
    char *t;

    t=(char*)malloc(100);
    strcpy(t,s);
}

或者,我们可以将 s 分配给 t,如下所示:t=s;。使用替代方案的缺点是什么?

void main()
{
    char s[100]="hello";
    char *t;

    t=(char*)malloc(100);
    strcpy(t,s);
}

Alternatively, we could assign s to t like this: t=s;. What is the disadvantage of using the alternative?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

傾旎 2024-10-14 03:44:56

当使用像 t = s 这样的简单赋值时,您实际上并没有复制字符串,而是使用两个不同的名称引用同一个字符串。

When using a simple assignment like t = s you are not actually copying the string, you are referring to the same string using two different names.

陌伤ぢ 2024-10-14 03:44:56

如果您分配t=s,应用于t指向的内存块的每个更改都会影响s,这可能不是您想要的。

另外,您可能还想看看这篇文章

If you assign t=s every change applied to the memory block pointed by t will affect the s which may not be what you want.

Also, you might want to look at this post.

傾旎 2024-10-14 03:44:56

变量t 的值是一个或多个连续char位置。当您执行 t = s 时,您正在将 char s[0] 的位置复制到 t 中(并替换 s[0] 的旧值)来自 malloc() 的 code>t)。 t[0]s[0] 现在引用完全相同的字符 - 修改一个字符将通过另一个字符可见。

当您使用 strcpy(t, s) 时,您是将实际字符从一个位置复制到另一个位置。

前者就像把两个门牌号放在同一栋房子上。后者就像是对一所房子里的所有家具进行精确复制,然后将其放入第二所房子中。

The value of the variable t is the location of one or more contiguous chars. When you do t = s, you are copying the location of the char s[0] into t (and replacing the old value of t that came from malloc()). t[0] and s[0] now refer to exactly the same character - modifying one will be visible through the other.

When you use strcpy(t, s), you are copying the actual characters from one location to another.

The former is like putting two house numbers on the same house. The latter is like making an exact replica of all the furniture in one house and placing it into the second.

落墨 2024-10-14 03:44:56

strcpy() 函数用于将一个字符串复制到另一个字符串,您在这里误用了它。当使用指针时,您可以轻松地做到这一点,

t=s;

指针“t”获取字符串的基地址's',这就是指针的用途。另一方面,你的 strcpy 工作。你创建一个指针存储整个字符串。

strcpy() function is used to copy one string to another,you mis-used it here.When working with pointers you could have easily done it like,

t=s;

pointer 't' gets the base address of the string 's' and that is what pointers are for.On the other hand you the strcpy work.You make a pointer store THE WHOLE STRING..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文