C语言中static静态变量

静态变量的说明符是static

static静态变量属于静态存储方式,其存储空间是 静态数据区(也就是存入全局存储区),静态数据区的数据在整个程序运行期间一直占用这些内存。也可以认为他的内存地址一直不变。(静态变量,分配在静态存储区,在数据段中。函数退出之后,变量值不变。

属于静态存储方式的量不一定就是静态变量。 例如:外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。

所有全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。

在函数中定义的静态变量为静态局部变量,在全局中定义的静态变量为静态全局变量。同时static也可以定义函数,表示这个函数只能在此全局中使用。

1、静态局部变量
在函数中定义的static局部变量,即只能在定义该变量的函数内使用该变量。不论其使用的函数是否被调用,都一直存在。保留上次调用后留下的函数值

出现在函数内部的基本类型的的静态变量初始化语句只有在第一次调用才执行。而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

静态局部变量定义时没有赋初值自动赋值为0。

2、静态全局变量
静态全局变量是指在全局范围内定义的静态变量(函数外,程序开始前),也存储在静态存储区。

静态全局变量与静态局部变量的区别:
非静态全局变量:当有多个.C(源)文件的时候,可以作用到多个.C文件。
静态全局变量只能作用到当前.C(源)文件。在同一源程序的其它源文件中不能使用它(即声明(extern)该文件或者包含该变量声明的头文件中不能使用)。
静态局部变量只能作用到当前源文件的特定函数内。
静态局部变量初始化只有一次,但是可以多次赋值。

静态变量初始化:
在C中,初始化发生在代码执行之前,编译阶段分配好内存之后,就会进行初始化。.在C++中,初始化时在执行相关代码时才会进行初始化。主要是由于C++引入对象后,要进行初始化必须执行相应构造函数和析构函数,在构造函数或析构函数中经常会需要进行某些程序中需要进行的特定操作,并非简单地分配内存。

  • 15
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值