【C语言】变量及其相关知识

目录

一、局部变量与全局变量

局部变量

全局变量

二、作用域

代码块作用域

文件作用域

函数作用域

三、生存期

四、存储类型


一、局部变量与全局变量

局部变量

在函数内定义的变量就是局部变量,局部变量只能由该函数进行访问和修改,其他函数不能对其进行访问及修改。

全局变量

在函数外定义的变量叫外部变量,也叫全局变量,全局变量可以被本程序中所有函数所共同使用。定义全局变量如果不对其初始化则会自动初始化为0。当定义的全局变量与局部变量重名时,在函数内会屏蔽全局变量,只使用局部变量。

大量使用全局变量会是程序占用过多内存,全局变量从被定义开始直到程序退出才被释放。还会降低程序的可读性。

二、作用域

当变量被定义在程序的不同位置时,它的作用范围是不一样的,这个作用范围就是作用域。

代码块作用域

由一对大括号({ })包括的区域就是一个代码块,在代码块中定义的变量具有代码块作用域,其范围是从定义的位置开始到右大括号( } )处结束。即使不是在大括号内定义的也有代码块作用域。

例:

三个同名变量i定义在不同地方,分别打印不同地方的i的值。

文件作用域

任何在代码块之外声明的标识符(如全局变量、函数名等)都具有文件作用域。作用位置从声明处开始到文件结尾。

函数作用域

函数作用域只适用于goto语句的标签,作用将goto语句的标签限制在同一个函数内部,防止其他函数出现同名标签。

三、生存期

C语言的变量有两种生存期:静态存储期和自动存储期

(1)具有文件作用域的变量和函数属于静态存储期,静态存储期的变量在程序运行期间一直占用存储空间,直到程序运行结束才释放空间

(2)具有代码块作用域的变量一般属于自动存储期,自动存储期的变量在代码块结束时自动释放空间。

四、存储类型

(1)自动变量auto

在代码块中声明的变量默认的存储类型就是自动变量,用关键字auto来描述,如:

auto int i;

由于是默认存储类型,所以不加关键字auto也可以。

(2)寄存器变量register

# 变量声明为寄存器变量时,该变量有可能被存放到CPU寄存器中。

# 寄存器变量也具有代码块作用域。

# 当变量为寄存器变量时,无法通过取址运算符获取该变量地址。

(3)静态局部变量static

# 使用static声明的局部变量可以将该变量指定为静态局部变量;

# static使局部变量具有静态存储期,变量的生存期与全局变量一样,直到程序结束才释放。

(4)关键字extern

形如:

extern  int a;

这里并不是定义变量a,而是声明使用的变量a在其它地方定义过了,两者使用的变量是同一个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值