【从0开始C语言(自学记录)】变量三属性(类型、作用范围、存储类别)

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

目录

一、类型:

二、作用范围:

1、局部变量:在一个函数内部{……}定义的变量

2、全局变量(外部变量):在函数外部定义的变量

 3、例:

 4、注:

三、存储类别:

1、auto类别变量:

2、static类别变量(使用必须说明) 

3、register类别变量(寄存器变量)

4、extern类别变量(外部变量)


 

一、类型:

类型是定义出来的(int,char,float,double等)

定义格式:  类型名 变量列表;  

如: int x,y,z;

二、作用范围:

从变量的作用域(即从空间)的角度来观察,变量可以分为:全局变量和局部变量。

1、局部变量:在一个函数内部{……}定义的变量

  1. 局部变量只能在它所在的函数内有效
  2. 在不同的函数中可以出现同名的变量,分别属于不同的变量,彼此 互不影响
  3. 复合语句中定义的变量只在此复合语句中有效
  4. 所有的形参都是局部变量

2、全局变量(外部变量):在函数外部定义的变量

  1. 全局变量的有效范围是在本文件内从定义该变量的位置开始到本文件的结束
  2. 可以在其有效范围内被每个函数引用
  3. 在同一个文件中若全局变量与局部变量同名,则局部变量屏蔽全局变量

 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类别变量(外部变量)

  • 作用:加大变量的作用范围(从一个文件内扩展局部变量的作用域)              
  • 两种说明格式:定义的同时说明:存储类别 类型名 变量名;
  •                          分别定义,说明:类型名 变量名;
  •                                                       存储类别 变量名; 

 例如:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一定能学会!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值