C语言static关键字

C语言中static关键字的常见用法
  • 修饰局部变量
  • 修饰全局变量
  • 修饰函数
1.用于局部变量的修饰符

通常位于某个函数体内,被修饰的局部变量通常称为局部静态变量(静态局部变量),只能在该函数内调用。
它的值不会因为函数调用的结束而清除。这是由于静态变量和全局变量一样,都存储在全局区,不像函数中的自动变量那样存储在栈空间中。下面这张图介绍了各种变量的存储位置。
在这里插入图片描述

静态局部变量的特性:
存储位置:处于静态区,用 static修饰函数中的变量后,变量的存储位置就由原来的栈改为静态存储区
初始化:未经初始化的局部静态变量会被程序自动初始化为0
作用域:局部作用域,即当定义它的函数结束的时候,作用域随之结束,不能被访问,说明只能在定义它的函数中使用。而且局部静态变量本身仍然是存在于静态区的,在程序结束之前,它一直存储在静态区

现在,应该能理解下面程序的运行结果了吧?
x是局部变量,每次调用函数都会被初始化为0;
y是静态局部变量,一开始就放在静态区,调用函数与否,y值都会保留。
在这里插入图片描述

2.用于全局变量的修饰符

一般我们认为函数外的变量为全局变量,全局变量的定义就是具有文件作用域的变量,即文件中都可见。
对于全局变量,如果想在另一个文件中修改或者查看等,可以使用extern关键字引入。
对于static修饰的全局变量(称为静态全局变量),它仍然有文件作用域属性,但是无法再通过使用extern关键字来引入到其他文件,这就static修饰全局变量的主要特点。
静态全局变量的特点:
存储位置、初始化同静态局部变量一样,都存储在静态区
作用域:静态全局变量可以被所在文件中的所有函数访问,不能被其他文件内的函数访问。这点与静态局部变量显然是有区别的

3.用于函数的修饰符

用static修饰的函数称为静态函数,在返回值前面加上关键字即可
我们知道,一个在file1.c中的普通函数是可以在file2.c中调用的(先引入包含该函数声明的头文件),但静态函数的作用域仅局限于本文件,不能再被其他文件调用。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值