1.存储类别
- 一些基本概念和术语
- 对象:被储存的每个值都占用一定的物理内存,C语言把这样一块内存称为对象。对象可以存储一个值或者多个值。一个对象可能并未存储事迹的值,但是它在存储适当的值时一定具有相应的大小。(注:C语言不是面向对象编程)
- C程序指定硬件内存中对象的方式:
- 通过标识符指定。例: int entity = 3;
- 通过表达式指定。例:int * pt = &entity; pt是一个标识符,但*pt是一个表达式。
- 描述对象
- 存储期:指对象在内存中保留了多长时间。不同的存储类别具有不同的存储期、作用期和链接。
- 访问对象
- 标识符用于访问对象。通过作用域和链接描述标识符,标识符的作用域和链接表明了程序的哪些部分可以使用它。
- 作用域:描述程序中可访问标识符的区域。一个C变量的作用域可以是块作用域、函数作用域、函数原型作用域或者文件作用域。
- 块作用域:块是用一对花括号括起来的代码区域。定义在块中的变量具有块作用域,块作用域变量的可见范围是从定义处到包含该定义的块的末尾。(注:虽然函数的形参声明在函数的左花括号之前,但是他们也具有块作用域,属于函数体这个块。)局部变量都具有块作用域。
- 函数作用域:仅用于goto语句的标签。这说明即使一个标签首次出现在函数的内层块中,它的作用域也会延伸到整个函数。
- 函数原型作用域:用于函数原型中的形参名。作用范围是从形参定义到原型声明结束。这说明编译器在处理函数原型中的形参时只关心它的类型,二形参名通常无关紧要。(注:在变长数组中,形参名是有用的)。
- 文件作用域:变量的定义在函数的外面,具有文件作用域。具有文件作用域的变量,从它的定义到该定义所在文件的末尾均有效。文件作用域变量也称全局变量。
- 链接
- 描述定义在程序某翻译单元中的变量可悲链接的成都。
- C变量有3中链接属性:外部链接、内部链接或无链接。
- 具有块作用域、函数作用域或函数原型作用域的变量是局部变量,无链接变量。这意味着这些变量属于定义它们的块、函数或原型私有。
- 具有文件作用域的变量可以是外部链接或内部链接。外部链接变量可以在多个文件程序中使用,内部链接变量只能在一个翻译单元中使用。
- 如何判断文件
- C程序指定硬件内存中对象的方式:
- 对象:被储存的每个值都占用一定的物理内存,C语言把这样一块内存称为对象。对象可以存储一个值或者多个值。一个对象可能并未存储事迹的值,但是它在存储适当的值时一定具有相应的大小。(注:C语言不是面向对象编程)