谈谈对变量作用域的认识!很着急,字数多的来啊

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:40:09

自动变量
表示自动类型的关键字 auto ,例如: auto int m;
使用自动变量应注意:
(1)、它是局部变量,其作用范围仅限于定义它的函数。在该函数内它的值存在,并且可以对它进行访问。一旦离开这个函数,它的值不再保留,也不能对它存取。
(2)、关键字auto通常被省略。就是说只要变量在函数内部被定义,并且没有显示给出其存储类,就认为它是自动的。大多数自动变量都是这样处理的。
(3)、在不同的函数中不同的自动变量可以使用相同的名称,它们的类型可以是相同或是相异,彼此互不干扰,甚至可以分配在同一存储单元中。自动变量还具有动态性,即:在每次使用之前必须赋初值;否则,其值是随机数。自动变量存放在用户区的动态存储区中。
(4)、函数形参具有自动变量的属性,即属于它所在的函数内。但应注意,在形参说明中不允许出现关键字auto。
(5)、在C语言中函数是分程序结构。一个分程序是一个复合语句,在其中定义的变量都是自动变量,它的作用范围是这个分程序。如果在分程序外面也定义了同名变量,那么,它们表示两个不同的自动变量,其值和活动范围都不一样。

寄存器变量
(1)、寄存器变量与自动变量的性质基本相同,也具有局部性和动态性。寄存器变量应该供给那些使用频繁的变量(如循环计数变量等)。
(2)、应注意只有某些数据类型的变量可放在寄存器中,例如int量、char量和指针量等。不能把浮点量和双精度量定义为寄存器变量。
(3)、还应注意取地址运算符&不能作用于寄存器变量。

外部变量
(1)、任何在函数定义之外定义的变量都是外部变量,此时,通常省略关键字extern。
(2)、外部变量是全局变量,其作用域是整个程序,即全局有效。外部变量定义之后,该程序下面所有的函数都可以对它进行存取或修改。它的值被永久保留,存放在用户空间的静态存储区中。这样,同一外部变量在两次函数调用期间能保持它先前的值。这些性质是与自动变量截然不同的。
(3)、自动变量可以与外部变量同名(当然最好区分开)。当按名存取时,优先使用自动变量。
(4)、在一个文件中,如果对外部变量先定义后使用,那么使用时往往