Kotori 发表于 2017-8-20 13:19:35

S1E32作用域和链接属性笔记

作用域和链接属性
1>作用域
        作用域:指标识符的作用范围。C语言中作用域分为四种:
        1)代码块作用域;即{大括号}所包围的内容;
        2)文件作用域;即全局变量,函数名;
        3)原型作用域;指函数声名中的形参;
        4)函数作用域;goto语句标签,只能在函数内部跳转,一般很少使用。
2>定义和声名
        定义会在内存中申请空间存放需要的数据,而声名只是说明此数据已存在,不要重复定义。
3>链接属性
        C语言中有三种链接属性,用来说明不同作用域间的同名标识符的关系。
        1)external(外部的):多个文件中声名的同名标识符表示同一个实体;
        2)internal(内部的):单个文件中声名的同名标识符表示同一个实体;
        3)none(无):声名的同名标识符被当作独立不同的实体;
        注意:只有文件作用域才能拥有external,internal属性,其它的都是none;
        通过static来修饰标注符,能把文件作用域由external转为internal。从而使得文件中的全局变量对其它文件不可见。但这是一次性操作,不能恢复。
static int a = 1;
//则在其它文件中定义下面语句也无法访问变量a
extern int a;
页: [1]
查看完整版本: S1E32作用域和链接属性笔记