c - 如何在C中访问同名的局部变量和全局变量
问题描述
我在学校有这个任务,其中我必须找到以下 C 代码的输出,并且还要解释输出。
#include<stdio.h>
int i;
void fun1(void);
void fun2(void);
int main()
{
fun1();
fun2();
return 0;
}
void fun1(){
i=20;
printf("%d\t",i);
}
void fun2(){
int i=50;
printf("%d",i);
}
输出为 20 50 因为在 fun1() 中,全局变量“i”被分配给 20 并被打印出来。在 fun2() 中,变量“i”是一个局部变量,它被声明并初始化为 50,然后被打印出来。
出于好奇,我有以下问题,如何在 fun2() 中使用全局变量“i”?一个简单的解决方案是简单地更改名称并避免整个事情。但我的好奇心是由于Java,其中有一个关键字“this”来访问类变量而不是局部变量。
那么有什么办法可以在C中做到这一点吗?
解决方案
唯一的方法是在代码块中隐藏局部变量的声明。
例如
#include <stdio.h>
int i = 10;
void fun2( void )
{
int i = 20;
printf("local i = %d\n",i);
{
extern int i;
printf( "global i = %d\n",i);
}
}
int main(void)
{
fun2();
}
程序输出为
local i = 20
global i = 10
推荐阅读
- matlab - 圆形区域内函数的渐变填充Matlab
- php - Ajax 调用返回一个空对象数组
- python - 在 PyInstaller 中使用自定义修改的规范文件生成一个文件可执行文件
- keycloak - 是否可以在 Keycloak 中为每个用户添加多个电子邮件?
- jquery - 为什么`each`不迭代jQuery对象?
- javascript - 在纯纯 JavaScript 无 CSS 中反转 div 的顺序
- api - Magento soap api shoppingCartCreate 与 quote_currency_code 参数
- excel - VBA查找#N/A值并将相邻单元格复制到另一个工作表并循环
- javascript - 在移动设备上的 div 上方显示 ul 列表
- version - 版本 4.6.4 不再可用?