c - 对类型结构的重复执行操作

标签 c struct

我试图了解如何使用 C 中的结构,并且偶然发现了列表。我在 C 中找到了以下列表的定义:

typedef struct ListNode∗ List;

struct ListNode {
   int item;
   List next;
};

假设我有一个可以创建新列表的函数,它生成了一个带有 item = 1 且 next = someList 的列表 li。

然后我将 li 复制到一个新变量中并对其执行一些操作:

List li1 = li;
li1->item = 2;

现在这个变化也影响到了li本身吗?意思是 li->item 现在也是 2?

我想我真正要问的是我是否真的复制了结构类型或只是创建了另一个对其的引用。有人可以帮我澄清一下吗?

最佳答案

假设li指向一个有效的ListNode对象,那么

List li1 = li;

创建指针的副本。经过上述定义和初始化后,您就有了两个指针(lili1),它们都指向同一个对象。

如果您想要深层复制,那么您需要显式地实现它,这对于列表来说意味着复制列表中的每个节点。

关于c - 对类型结构的重复执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49733702/

相关文章:

c - 换页符 (\f) 和垂直制表符 (\v) 在 C 中不起作用

c++ - 带有结构 vector 的结构

c - 将结构体指针添加到结构体指针的末尾

c - 在 C 中动态创建对象

c++ - 使用 select() 检测套接字何时断开连接

c - avr-gcc Arduino atmega2560 使用太多 RAM

代码不编译 : error C2099: initializer is not a constant

c - 用 C 将文件读取到矩阵

f# - 访问外部程序集中结构的公共(public)只读成员

在 C 中创建堆栈,节点结构