C语言的局部和全局作用域规则是什么?
全球范围
全局作用域指定在块外定义的变量在程序结束前都是可见的。
示例
#include输出结果int c= 30; /* global area */ main (){ int a = 10; printf (“a=%d, c=%d” a,c); fun (); } fun (){ printf (“c=%d”,c); }
a =10, c = 30 c = 30
本地范围
局部作用域指定块内定义的变量仅在该块中可见,而在块外不可见。
在块或函数(本地)中声明的变量可以在该块内访问,并且不存在于该块之外。
示例
#include输出结果main (){ int i = 1;//本地范围 printf ("%d",i); } { int j=2; //本地范围 printf("%d",j); } }
1 2
即使变量在它们各自的块中重新声明并具有相同的名称,它们也会被不同地考虑。
示例
#include输出结果main (){ { int i = 1; //同名变量 printf ("%d",i); } { int i =2; //同名变量 printf ("%d",i); } }
1 2
在执行内部块时,重新声明与外部块中具有相同名称的块中的变量会屏蔽外部块变量。
示例
#include输出结果main (){ int i = 1;{ int i = 2; printf (“%d”,i); } }
2
嵌套块可以访问在内部块外部声明的变量,前提是这些变量未在内部块中声明。
示例
#include输出结果main (){ int i = 1;{ int j = 2; printf ("%d",j); printf ("%d",i); } }
2 1