【问题标题】:Assign pointer instances of structures in C在 C 中分配结构的指针实例
【发布时间】:2014-03-29 01:49:19
【问题描述】:

现在我从这篇关于assigning one struct to another 的帖子中知道,我可以将一个结构变量分配给另一个相同类型的变量,并且会发生副本。

struct Test t1;
struct Test t2;
t2 = t1;

但是如果我这样做呢?

struct Test *t1;
struct Test *t2;
t1 = malloc(sizeof(struct Test));
t2 = malloc(sizeof(struct Test));
//assign t1 and t2's fields some data
*t2 = *t1;

在这种情况下会发生同样的 memcpy 吗?

【问题讨论】:

  • 指针,是的。它指向,不(正如所写,t1 无论如何都是不确定的,所以它的 UB 甚至可以评估它)。
  • 哦,是的,我就是这个意思。我现在将编辑问题。

标签: c struct


【解决方案1】:

是的,这两个赋值涉及的类型是相同的,因此该赋值的效果也相同(假设后一个示例中 t1t2 指向有效对象)。

【讨论】:

    【解决方案2】:

    以下

    *t2 = *t1;
    

    确实会做一个浅拷贝。基本上,指针上的* 操作符就像您使用指向的值一样。

    但请务必分配内存并为它们定义值,否则您将获得未定义的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2018-07-15
      • 2014-02-23
      • 1970-01-01
      相关资源
      最近更新 更多