标识符作用域
1. 标识符(identifier)用于代表程序中的对象,根据所代表的对象不同,可将标识符分为变量名、数组名、函数名、数据类型说明符、符号常量名(宏名)和语句标号。
2. 标识符的作用域:
#include<stdio.h> int x;//变量x的引用性声明,不需要建立存储空间 void main() { printf("%d",x); } int x=1;//外部变量x的定义,需要建立存储空间
3. 标识符作用域规则
①不允许同一作用域内定义或声明代表不同对象的同名标识符。
②允许不同作用域内定义或声明代表不同对象的同名标识符。
③内层作用域中访问的同名标识符是内层作用域中定义的标识符,此时外层作用域中定义的同名标识符被自动隐蔽不可访问。以下程序输出结果:2 2 2 2 5 0。
1 #include<stdio.h> 2 int x=0; 3 void f(); 4 5 int main() 6 { 7 int x; 8 for(x=1;x<5;x++){ 9 int x=2; 10 printf("%d",x); 11 } 12 printf("%d",x); 13 f(); 14 return 0; 15 } 16 17 void f() 18 { 19 printf("%d",x++); 20 }
外部对象连接属性
1. 同一个代码段中的函数名只允许在一个源文件中被定义一次,允许在多个源文件中被多次地引用性声明。
2. 它们具有两种连接属性之一:内部连接(internal linkage)和外部连接(external linkage)。分别对应储存类型说明符 static和extern。
extern 返回值类型说明符 函数名(形参类型表); extern 数据类型说明符 全局变量名;
变量的储存属性
1. 变量的生存周期属性
2. 变量的储存器属性
原文:https://www.cnblogs.com/yuukirito/p/14749839.html