我试图了解如何使用 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;
创建指针的副本。经过上述定义和初始化后,您就有了两个指针(li
和 li1
),它们都指向同一个对象。
如果您想要深层复制,那么您需要显式地实现它,这对于列表来说意味着复制列表中的每个节点。
关于c - 对类型结构的重复执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49733702/