C语言 Static关键字的作用详解

前言:

static 是用来修饰函数和变量的,可以修饰局部变量,全局变量以及函数

一、修饰局部变量  (称为静态局部变量)

来看俩段代码:

C语言 Static关键字的作用详解_第1张图片

 

C语言 Static关键字的作用详解_第2张图片

 对于第一段代码来说,它循环5次,每次调用一下fun()函数,而fun()函数每次进去的时候,x的值都为0,所以,当x++后,每次输出的值都为1

对于第二段代码来说,与第一种情况相类似,循环5次,每次输出x的值;但是,与第一段代码不相同的是,x是由static定义的, static对x 只定义一次,x的值不会随着fun()这个函数的结束而被释放掉,直到程序结束,它的生命周期才结束。所以每次fun()函数执行的时候,x的值都会在原来值的基础上加1.

当然,用static修时变量时,其默认值为0

C语言 Static关键字的作用详解_第3张图片

 

二、修饰全局变量   (称为静态全局变量)

当static修饰全局变量时,只能在当前源文件使用,不能在其他源文件下使用

C语言 Static关键字的作用详解_第4张图片

 extern int x:声明x为其他文件的变量;我们可以发现编译不通过,但是如果将static关键字移除,程序就可以通过:

C语言 Static关键字的作用详解_第5张图片

 三、修饰函数  (称为静态函数)

当static修饰函数的时候,此函数只能在当前源文件使用,不能在其他源文件下使用

C语言 Static关键字的作用详解_第6张图片

 当fun()函数未被static修饰时,在 源.cpp 中可以正常执行 test.cpp 中的 fun() 函数,程序正常运行

然而,当fun()函数被static修饰时,程序就会出错

C语言 Static关键字的作用详解_第7张图片

四、总结

1.当static修时局部变量时,变量只能被初始化一次,且static静态局部变量,其生命周期为整个进程,直到程序结束。(static修时变量时,默认值为0)

2.当static修时全局变量时,只在当前源文件有效,不能在其他源文件使用

3.当static修时函数时,只在当前源文件有效,不能在其他源文件使用

你可能感兴趣的:(c语言)