gpt4 book ai didi

c - C : Nested blocks 中的作用域规则

转载 作者:太空狗 更新时间:2023-10-29 15:26:15 25 4
gpt4 key购买 nike

我有以下嵌套函数:

int main()
{
int a, b, c;
a = 10;
int foo()
{
int a, b, c;
//some more code here
}
// some more code here
}

现在,我需要将属于foo()的变量a赋值给属于foo()的变量a 主要()。基本上,像 foo.a = main.a 这样的东西就是我要找的东西。

有什么办法可以做这种作业吗?我通读了范围规则 herehere , 但没有找到我可以在这种情况下使用的任何东西。

我知道使用嵌套函数是不可取的,但我正在处理预先存在的代码,而且我没有更改代码结构的权限。

我该如何继续?

最佳答案

嵌套函数部分分开,据我所知,C 没有提供任何直接方法来访问隐藏 变量。

主要建议:不要使用这种方法。始终为内部作用域使用单独的变量名,并向 gcc 提供 -Wshadow 以检测并避免可能的shdowing

但是,为了以防万一,您必须对内部作用域和外部作用域使用相同的变量名,并且必须从内部作用域访问外部作用域变量,最好的选择是(按照这个顺序,在内部作用域中 block )

  • 声明一个指针,将外部变量的地址赋给它。
  • 声明并定义局部变量。
  • 同时使用。

注意:作为一般建议,请尽量不要以这种方式编写代码(我理解维护部分)。它既难以管理又难以阅读。

关于c - C : Nested blocks 中的作用域规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com