static 讲解

本文探讨了C语言中static关键字的作用,指出静态变量在全局和局部作用域的不同表现。静态全局变量在整个程序运行期间存在,而静态局部变量只在其定义的函数内可见,但其值在函数多次调用中保持。通过三个func()函数调用来展示静态变量的行为,展示了静态变量如何保留其状态并从上次调用中记住值。
摘要由CSDN通过智能技术生成
  1 #include<stdio.h>                                                                                         
  2 #include<stdlib.h>                                                                                        
  3 static int a=2018;                                                                                        
  4 static void func(void)                                                                                    
  5 {                                                                                                         
  6     static int b;                                                                                         
  7     printf ("a=%d,b=%d\n",a++,++b);                                                                       
  8 }                                                                                                         
  9 int main()                                                                                                
 10 {                                                                                                         
 11     func();                                                                                               
 12     func();                                                                                               
 13     func();                                                                                               
 14     return 0;                                                                                             
 15 }                                                                                                                                         

输出如下

a=2018,b=1
a=2019,b=2
a=2020,b=3

如果一个变量加了static的话,就会在全局数据区存储,如果不对他初始化的话,编译器就会对他自动进行赋值为0。这里值得注意的是static的作用域和生命周期,这里我又要说一下作用域和生命周期的概念。

生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的作用域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。

作用域: 变量的可见代码域(块作用域,函数作用域,类作用域,程序全局作用域)。

static变量是指静态的变量,不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是static变量的作用域并不等同于它的生存周期,它的作用域决定于它被定义的位置。可以认为static变量的作用域<=生存周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值