“变量的作用域”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) (→同名隐藏) |
||
第77行: | 第77行: | ||
=== 同名隐藏 === | === 同名隐藏 === | ||
如果在函数内定义了一个局部变量,在块内也定义了一个块内变量,当块内变量名与局部变量名同名时,进入块时,将把局部变量隐藏掉,使用的是块内变量。 | 如果在函数内定义了一个局部变量,在块内也定义了一个块内变量,当块内变量名与局部变量名同名时,进入块时,将把局部变量隐藏掉,使用的是块内变量。 | ||
+ | |||
+ | <syntaxhighlight lang="c"> | ||
+ | #include<stdio.h> | ||
+ | |||
+ | int g_max = 10; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int a = 0; | ||
+ | int g_max = 100; | ||
+ | a = g_max; | ||
+ | printf("a = %d \n", a); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | a = 100 | ||
+ | </syntaxhighlight> |
2022年10月28日 (五) 07:10的版本
https://www.bilibili.com/video/BV1vR4y1H7MY/?p=8
变量的作用域(可见性):每一个变量名都有一个作用域问题,即变量名在什么范围内有效。
- 全局变量:在函数外定义的变量。
- 局部变量:在函数中定义的变量。
- 程序块中的变量:在函数外部,在复合语句中定义的变量。
#include<stdio.h>
int g_sum = 100; //全局变量
int main()
{
float ft = 12.23f; //局部变量
int a = 10;
int g_sum = 0; //局部变量和全局变量同名
a = g_sum; //? 100,0
return 0;
}
int g_max = 10;
void fun()
{
int a = g_max;
int sum = 0;
}
int main()
{
int x = g_max;
int sum = 10;
{
int z = 10;
z = 100;
//z的作用域仅在块内
}
//x = z + sum; //编译不通过
return 0;
}
int g_max = 10;
int main()
{
int a = 100;
int b = 200;
return 0;
}
int g_max = 100;
//相同作用域重复定义变量名编译不通过
#include<stdio.h>
int g_max = 10;
int main()
{
int a = 100;
int b = 200;
{
int a = 0;
printf("a = %d \n", a);
}
b = a + 10;
printf("b = %d \n", b);
return 0;
}
a = 0
b = 110
同名隐藏
如果在函数内定义了一个局部变量,在块内也定义了一个块内变量,当块内变量名与局部变量名同名时,进入块时,将把局部变量隐藏掉,使用的是块内变量。
#include<stdio.h>
int g_max = 10;
int main()
{
int a = 0;
int g_max = 100;
a = g_max;
printf("a = %d \n", a);
return 0;
}
a = 100