Static变量简介

  
1:变量的存储方式
Static变量是以静态存储的方式存储的。什么是静态存储方式?所谓静态存储方式是指在程序运行期间分配固定的存储空间的方式。但不是以静态存储方式存储的变量就是静态变量,在变量前加上static标志才是静态存储变量。如外部变量是静态存储方式,但它不是静态变量。
2:静态局部变量
静态局部变量在函数内部定义,允许对静态局部变量赋才初值,但是在没有赋初值的情况下,系统会自动的给其赋0。还有一个最大的特点是:static变量能够保存前一次的值,也就是说虽然它是局部变量,每次给它赋予了一个初值,但是它实际的值是上次留下来的值,如:
#include<stdio.h>
#include<stdlib.h>
void main()
{
       int i;
       void m();
       for (i=0;i<5;i++)
        m();
}
 
void m()
{
       static int a=0;
       printf("%d,",a++);
}
程序的答案是:0,1,2,3,4,而不是0,0,0,0,0
3:静态全局变量
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
4:静态变量的应用
静态变量以它能够保持前次运算结果的特点,广泛的运用在对前期数字敏感或是需求度很大的程序当中,如下面一个程序实现把一个int型数字转化char型字符的功能:
void output_code(FILE *output,unsigned int code)
{
static int output_bit_count=0;
static unsigned long output_bit_buffer=0L;
 output_bit_buffer |= (unsigned long) code << (32-BITS-output_bit_count);
 output_bit_count += BITS;
 while (output_bit_count >= 8)
 {
    putc(output_bit_buffer >> 24,output);
    output_bit_buffer <<= 8;
    output_bit_count -= 8;
 }
}
该程序的妙笔就在于static int output_bit_coun和static unsigned long output_bit_buffe,前一个静态变量能够保留上次剩下的二进制bit数目,而后一个静态变量能够保留前次移位后的二进制值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值