传递链表中函数的结构指针

问题描述 投票:-2回答:1

我正在尝试了解链表的工作。

  1. 假设我定义了结构节点* head,tail的全局结构指针变量。那么在这种情况下,每当我调用head-> data时,由于可以访问结构地址,因此可以更改数据。

  2. 假设我定义了一个结构节点* head,tail的局部结构指针变量,并使用malloc分配了它们的内存位置,现在当我将该指针传递给某个函数时,与传递地址位置就不一样了。如果我在其他功能中使用此功能,行为将与上面相同

c function pointers structure
1个回答
0
投票

让我们考虑如何存储全局变量以及如何存储分配的变量。全局变量位于进程内存的“代码”段中,而malloc在堆中分配内存。现在:

  1. 是的,这将导致类似的行为,因为您可以对其进行修改。
  2. 不,这并不完全相同,因为全局变量可能会在C / C ++中引起讨厌的错误,因为可以从任何文件访问它们,并且有可能对其进行修改。因此,无法明确控制谁可以修改它们。但是,通过函数参数传递的指针只能由被调用者在它们内部进行修改。
© www.soinside.com 2019 - 2024. All rights reserved.