C语言static静态变量详解

点击打开在线编译器,边学边练

有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,这时就应该指定局部变量为静 态局部变量,用关键字 static 进行声明。 通过用static类型声明后的变量,其变量的内存空间位于内存的全局静态区,仅会初始化一次,这是一个非常重要的特性,请大家通过如下的程序理解:

#include<stdio.h>
static a=5;
int fun()
{
    a=a*2;
    printf("a=%d\n",a);
    return 0;
}
int main()
{
    int i=0;
    for(i=0;i<10;i++)
    {
        fun();
    }
	return 0;
}


请大家先自行理解,然后上机运行如上代码,可以观察a的值输出如下:

a=10
a=20
a=40
a=80
a=160
a=320
a=640
a=1280
a=2560
a=5120

这个结果的原因在于,每次a的值是接着上一次函数调用的值继续运算的,并非每次都初始化丛5开始计算,这就是static的特性,请大家好好理解


本文固定URL:https://www.dotcpp.com/course/627

第一章 C语言的过去与未来
第二章 C语言快速入门
第三章 C语言的数据类型
第四章 C语言中的基本输入输出
第五章 运算符和表达式
第六章 C语句和程序流
第七章 函数
第八章 数组
第九章 指针
第十章 复合结构
第十一章 文件操作
第十二章 预处理
第十三章 位运算
Dotcpp在线编译      (登录可减少运行等待时间)