目录
一、类型:
类型是定义出来的(int,char,float,double等)
定义格式: 类型名 变量列表;
如: int x,y,z;
二、作用范围:
从变量的作用域(即从空间)的角度来观察,变量可以分为:全局变量和局部变量。
1、局部变量:在一个函数内部{……}定义的变量
- 局部变量只能在它所在的函数内有效
- 在不同的函数中可以出现同名的变量,分别属于不同的变量,彼此 互不影响
- 复合语句中定义的变量只在此复合语句中有效
- 所有的形参都是局部变量
2、全局变量(外部变量):在函数外部定义的变量
- 全局变量的有效范围是在本文件内从定义该变量的位置开始到本文件的结束
- 可以在其有效范围内被每个函数引用
- 在同一个文件中若全局变量与局部变量同名,则局部变量屏蔽全局变量
3、例:
#include <stdio.h>
int a, b; //全局变量
void fun()
{
a = 100;
b = 200;
}
int main()
{
int a = 10; //局部变量
int b = 20; //局部变量
printf("a=%d,b=%d\n", a, b);
return 0;
}


4、注:
建议不在必要时不要使用全局变量,原因如下:
①全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元
②全局变量使函数的通用性降低了,因为如果在函数中引用了全局变量那么执行情况会受到有关的局部变量的影响,如果将一个函数移到另一个文件中还要考虑把有关的局部变量及其值一起移过去
③使用全局变量过多会降低程序的清晰性,人们往往难以清楚地判断出每个瞬间各个局部变量的值;由于在各个函数执行时都可能改变局部变量的值,程序容易出错
三、存储类别:
从变量值存在的时间(即生存期)角度来看,变量的存储方式有两种:
1、静态存储方式:指程序运行期间由系统分配固定的存储空间的方式
2、动态存储方式:指在程序运行期间根据需要进行动态的分配存储空间的方式
1、auto类别变量:
- 在调用函数时,系统会给这些变量分配存储空间,在函数调用结束时就会自动释放这些存储空间,使用时间短(临时变量)
- 局部变量默认为auto类别,无初始化时,初始值为随机
2、static类别变量(使用必须说明)
- 从定义到程序运行结束都占用存储空间(使用时间长)
- 全局变量默认为static类别,不初始化时初始值为0
- 只进行一次初始化(值用完一次划掉,变量值就是上一次函数调用结束时的值)
3、register类别变量(寄存器变量)
只能时局部变量才可以说明为此类型,且此类型变量不能直接使用
4、extern类别变量(外部变量)
- 作用:加大变量的作用范围(从一个文件内扩展局部变量的作用域)
- 两种说明格式:定义的同时说明:存储类别 类型名 变量名;
- 分别定义,说明:类型名 变量名;
- 存储类别 变量名;
例如:

本文详细介绍了C语言中变量的三大属性:类型、作用范围和存储类别。局部变量局限于函数内部,全局变量在整个文件内有效,而静态变量则在整个程序执行期间保持其值。此外,还探讨了auto、static、register和extern这四种存储类别的特点和用法。
144

被折叠的 条评论
为什么被折叠?



