本用法针对于C语言,文中所用代码在Qt中均运行成功。
static 主要用法:修饰变量、修饰函数
1、修饰变量:形成动态变量和静态变量
#include<stdio.h>
void myauto()
{
int a = 0;
printf("a = %d\n",a);
a++;
}
int main()
{
int i;
for(i = 0; i < 5; i++)
{
myatuo();
}
}
程序的输出结果为 :
a = 0
a = 0
a = 0
a = 0
a = 0
-
静态变量
首先只要整个程序开始执行之后,静态变量是一直存在的,不消失的;
其次,静态变量值初始化一次,即static int a = 0;
语句只执行一次
#include<s tdio.h>
void mystatic()
{
static int a = 0;//整个进程运行过程中一直有效,是在静态区,但是只能mystatic函数内部访问使用
printf("a = %d\n",a);
a++;
}
int main()
{
int i = 0;
for(i = 0; i < 5; i++)
{
mystatic();
}
}
程序运行结果为:
a = 0
a = 1
a = 2
a = 3
a = 4
-
总结
static定义的静态局部变量:
- 静态局部变量在函数内存定义的,其生存周期为整个源程序,但是作用域同自动变量,只能在定义该变量的函数内部使用;退出该函数之后该变量仍然存在只是不能使用;
- 静态变量未赋初值的系统自动赋值0;其他自动变量赋值则具有随机性;
static定义的静态全局变量:
- 仍然采用静态存储方式,但是作用域为定义该变量的源文件内部 ,非静态的全局变量的作用域为这个源程序(包括多个源文件)
2.static修饰函数
使用static定义的函数只能在本文件中被调用,在源程序的其他文件中不可以被调用。