1
C语言程序设计
1.8.2 7.2 内部变量

7.2 内部变量

在函数内定义的变量称为“内部变量”,由于内部变量的作用域仅局限于其所在的函数,因此内部变量也称为“局部变量”。内部变量分为自动变量和静态局部变量。自动变量定义时,前面可以加关键字auto,其格式为:

auto 类型说明符 变量名表;

例如:

img577

说明:

(1)关键字auto一般可以缺省,本章以前函数内所定义的变量都是自动变量。

上例等价于:

img578

(2)由于自动变量是在函数调用时动态存储区建立的,因此,其作用域和生命期都是局部的。函数调用结束时,自动变量将消失。

(3)局部变量还包括在复合语句内定义的变量,作用域为其所在的复合语句,离开复合语句后,这些变量的值就释放。

(4)由于局部变量的作用域仅局限于所在的函数,在不同函数中的局部变量是不可见的,因此,在一个函数内可以为局部变量取任意名字,而不用担心与其他函数使用的变量同名。这个特点便于多人合作用C语言共同开发一个应用程序。使用局部变量很好地实现了不同函数之间的数据隐蔽。

例7-1 局部变量作用域如下所示:

//7-1.cpp

img579

说明:

(1)main()函数定义的变量a和b只在主函数内有效,其作用域为主函数。

(2)main()函数中,复合语句内定义的变量c,其作用域为该复合语句,离开复合语句后,变量c的值被释放。

(3)f1()函数中定义的变量b和c在f1()函数内有效,f1()函数的形式参数也是局部变量,其作用域为f1()函数。

(4)尽管main()函数和f1()函数中都使用了相同的变量名a、b和c,但他们分别属于不同的函数,代表不同的对象,互不干扰。