C 中全局变量的重新分配

问题描述 投票:0回答:1

据我了解,当从翻译单元调用函数并且该函数使用该翻译单元的全局变量时,变量地址是不可更改的。如果从此模块调用功能,地址不会发生变化。 我怎样才能提供,每次进入模块的函数都会更新变量地址?真的是在堆栈分配变量而不是在数据段分配变量吗? 例如,我们有模块MODULE和该模块的函数FUNC。我们还有该模块的 MODULE2 和 FUNC2。变量VAR是MODULE的全局变量。

调用模块的FUNC
  1. 调用MODULE2的FUNC2
  2. 调用模块的FUNC。 我怎样才能在每次进入 MODULE 时重新分配 VARIABLE 位置(实际上是每次 FUNC 调用)?
c scope allocation
1个回答
1
投票
如何提供,每次进入模块函数都会更新变量地址?

我认为每个翻译单元都有自己的全局变量实例。

如果是这样,请在所有需要该变量的

static

文件包含的头文件中声明它

.c
,并将指向该变量的指针传递给应该使用它的函数。
    

© www.soinside.com 2019 - 2024. All rights reserved.