C 语言中的局部作用域和全局作用域规则是什么?
全局作用域
全局作用域指定在块外定义的变量到程序结束都是可见的。
示例
#include<stdio.h> 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<stdio.h> main (){ int i = 1;// local scope printf ("%d",i); } { int j=2; //local scope printf("%d",j); } }
输出
1 2
即使变量在各自的块中被重新声明并且具有相同名称,也会被认为是不同的。
示例
#include<stdio.h> main (){ { int i = 1; //variable with same name printf ("%d",i); } { int i =2; // variable with same name printf ("%d",i); } }
输出
1 2
在名称与外部块中的名称相同的块内重新声明变量,在执行内部块时会屏蔽外部块变量。
示例
#include<stdio.h> main (){ int i = 1;{ int i = 2; printf (“%d”,i); } }
输出
2
在内部块内声明的变量可用于嵌套块,但前提是这些变量未在内部块中声明。
示例
#include<stdio.h> main (){ int i = 1;{ int j = 2; printf ("%d",j); printf ("%d",i); } }
输出
2 1
广告