首先是这两者的作用范围
局部变量在其声明的代码块范围中生效。
全局变量可以在声明位置之后的所有函数中生效。
在局部变量与全局变量同名的情况下
在局部函数中的全局变量会被“屏蔽”,只会使用局部变量的值。
同时,这两个同名变量是两个完全独立的变量,他们之间没有任何关联,也不会互相影响。
例如下示
//在控制台中打印目标文字
#include<stdio.h>
int n = 10; //全部变量
void func1(){
int n = 20; //局部变量
printf("funcl n: %d\n", n);
}
void func2(int n){
printf("func2 n: %d\n", n);
}
void func3(){
printf("func3 n: %d\n", n);
}
int main(){
int n = 30; //局部变量
func1();
func2(n);
func3();
//代码块由{}包围,符号“{}”包围的代码范围内在可以算作独立的作用域。
{
int n = 40; //局部变量
printf("block n: %d\n", n);
}
printf("main n: %d\n", n);
return 0;
}
个同名变量是两个完全独立的变量,他们之间没有任何关联,也不会互相影响。