Scope
2022-03-22
1分钟阅读时长
所谓作用域,就是变量的有效范围。
局部变量
定义在函数内部或代码块内部的变量称为局部变量,它的作用域仅限于函数或代码块内部, 否则无效。
说明:
-
在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;
同时,main 函数中也不能使用其它函数中定义的变量。main 函数是一个函数,与其它函数地位平等。
-
形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。
-
可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。
-
在语句块中定义变量,它的作用域只限于当前语句块,如for、if等或单纯的语句块。
全局变量
在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序。注意整个程序是所有的源文件,包括源文件和头文件。
在一个函数内部修改全局变量的值会影响其它函数,全局变量的值在函数内部被修改后并不会自动恢复,它会一直保留该值,直到下次被修改。
就近原则
不同作用域定义的同名变量无关联;
嵌套的作用域允许定义同名变量,使用变量的原则是就近原则,外层作用域的同名变量将被屏蔽。
#include<stdio.h>
int main(int args,int *argv[]){
int a=0;
{
double a=1.0;
a+=1;
printf("%f",a);
}
printf("%d",a);
}