作用域 ---- 文件作用域、函数作用域、代码块作用域、原型作用域
1.代码块作用域:以大括号包括的所有语句为一个代码块
大括号外面无法访问大括号里面定义的标识符
若大括号里面有和外面同名的标识符,则外面的该标识符在大括号里面无法访问
int i = 0; { int i = 1; int j = 2; printf("%d\n",i); //输出1 } printf("%d\n",i); //输出0 printf("%d\n",j); //错误
不同语句块中的变量不能相互访问
{ int j = 0; } { int i = 1; printf("%d\n",j); //错误 }
2.文件作用域
不在任何代码块声明的变量、函数从声明处到文件末尾都可以访问,这样的标识符具有文件作用域。
#include包含的也具有文件作用域
3.原型作用域(prototype scope):只适用于在函数原型中声明的参数名
唯一可能的冲突是同一个原型中声明两次同名变量
int fun(int i,int j); //不能在一个原型中声明同名形参
4.函数作用域
只适用与语句标签,语句标签用于goto语句
即一个函数的所有语句标签必须唯一
原文:http://www.cnblogs.com/hugue/p/5008667.html