如何在 C 中引用与全局变量同名的局部变量? [复制]

     2023-02-22     136

关键词:

【中文标题】如何在 C 中引用与全局变量同名的局部变量? [复制]【英文标题】:how refer to a local variable share same name of a global variable in C? [duplicate] 【发布时间】:2011-08-15 04:59:48 【问题描述】:

例如

#include<stdio.h>

int foo = 100;

int bar()

    int foo;
    /* local foo = global foo, how to implemented? */
    return 0;


int main()

    int result = bar();
    return 0;

我认为在函数栏中,直接调用 foo 只会得到全局 foo。我如何参考当地的 foo?我知道在 C++ 中有这个指针。但是,C有类似的东西吗?

非常感谢!

【问题讨论】:

也许你可以参考 Ouah 的答案:***.com/questions/12183899/… 【参考方案1】:

不,通过在 bar() 中声明 foo,您将全局 foo 排除在范围之外。在 bar() 内部,当您引用 foo 时,您将获得局部变量。

【讨论】:

我试过了,看起来你是对的。那么有什么方法可以引用 bar() 中的“全局 foo”吗? 改变你的局部变量的名字是正常的解决办法 只是看起来不太优雅,但如果这是唯一的方法,我可以做到 相反,在 C 中,无法从 bar() 内部引用全局变量 foo - 至少,在局部变量 foo 的声明完成后无法引用。在 C++ 中,您可以使用 ::foo,但这在 C 中不可用。 其他回答者删除了答案,因为您询问了如何访问局部变量。 C 并不真正适合范围解析和命名空间之类的功能。只需选择一个不同的名称就是优雅的解决方案。

c语言面试考点之二(代码片段)

...的局部变量,而那个局部变量的作用域就在那个循环体内如何引用一个已经定义过的全局变量?extern关键字全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?可以,在不同的C文件中以static形式来声明同名全局变... 查看详情

c语言面试考点之二(代码片段)

...的局部变量,而那个局部变量的作用域就在那个循环体内如何引用一个已经定义过的全局变量?extern关键字全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?可以,在不同的C文件中以static形式来声明同名全局变... 查看详情

c++-21局部变量和全局变量的区别

...局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两... 查看详情

局部变量和全局变量的区别

...蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都... 查看详情

c++-21局部变量和全局变量的区别

...局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两... 查看详情

C局部变量与函数同名-它是如何工作的?

】C局部变量与函数同名-它是如何工作的?【英文标题】:CLocalvariablehassamenameasfunction-howdoesitwork?【发布时间】:2013-04-1911:12:05【问题描述】:我向绝对初学者教授C语言,我注意到我的一些学生有这样的想法,即在函数中使用相... 查看详情

python函数中局部变量与全局变量遵守规则

参考技术A(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。(2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该... 查看详情

c语言若全局变量与局部变量同名,分析结果

#include<stdio.h>inta=3,b=5;//全局变量intmax(inta,intb) intc; c=a>b?a:b; returnc;intmain() inta=8;//局部变量 printf("max=%d",max(a,b));//局部a作用范围,全局b作用范围 return0; 查看详情

c语言若全局变量与局部变量同名,分析结果

#include<stdio.h>inta=3,b=5;//全局变量intmax(inta,intb) intc; c=a>b?a:b; returnc;intmain() inta=8;//局部变量 printf("max=%d",max(a,b));//局部a作用范围,全局b作用范围 return0; 查看详情

c语言局部变量与全局变量重名时的优先级问题(当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量)

当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量。参考文章:全局变量与局部变量优先级调用的问题—C/C++程序基础(二) 查看详情

c语言局部变量与全局变量重名时的优先级问题(当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量)

当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量。参考文章:全局变量与局部变量优先级调用的问题—C/C++程序基础(二) 查看详情

局部变量与全局变量(代码片段)

...义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。当去那句变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其他... 查看详情

笔记(局部变量全局变量)

...部定义的变量,在整个程序中都生效。(如果内部函数有引用外部函数的同名变量或全局变量,并且对此变量有修改。那么python会认为他是一个局部变量) global变量名----可让变量更改为全局变量nonlocal变量名------可让变量更... 查看详情

闭包(全局变量与局部变量)

...成局部变量,那么就会造成在函数中我们没有进行定义就引用了,所以会报该错误。引用全局变量,并在函数中对它进行修改:我们在开发中能尽量避免使用全局变量的就尽量避免使用。因为不同模块,不同 查看详情

c笔试题之简答题

...,类似的还有块作用域变量、函数原型作用域变量。2、如何引用一个已经定义过的全局变量?  使用关键字extern,或者使用引用头文件的方式。两种方式的区别是,如果代码中将被引用的全局变量写错,那么引用头文件方式... 查看详情

js全局变量与局部变量预解析与作用域链详解

...赋值的变量,使用的它的默认值undefined 4.4基本类型和引用类型第三章已经讲过 4.5垃圾收集同java 查看详情

c/c++语法知识点汇总

...sp;静态局部变量,在不同函数中可以同名。  静态全局变量,在不同文件中可以同名。  静态函数,在不同文件中可以同名。* 普通全局变量和普通函数,在同一工程中不能同名。  在相链接的程序与库... 查看详情

python中变量的引用、可变和不可变类型、局部变量和全局变量

参考技术A变量的引用变量和数据都是保存在内存中的变量和数据是分开存储的数据保存在内存中某个位置,通过地址来标记变量保存的是数据的地址,通过地址可以找到数据在内存空间的位置把变量保存数据地址的过程称为引... 查看详情