📢 : 关键字static的三种用法
✨✨ static的用法有三种,分别是 1. 静态局部变量 2. 静态全局变量,3. 静态函数,下面我们一一介绍 :
一,静态局部变量
- 栈区 :存放局部变量,形式变量,临时作用的变量。特点:进入作用于创建,出了作用域销毁(还给操作系统)
- 静态区 :存放全局变量,静态变量 。特点 : 创建后,直到程序结束后才销毁(还给操作系统)
#include <stdio.h> void test() { int a = 5; printf("%d ", ++a); } int main() { for(int i = 0 ; i < 10 ; i++){ test(); } return 0; }
返回 : 6 6 6 6 6 6 6 6 6 6
原因是创建的是局部变量,出了作用域以后就销毁,再次循环以后就会重新创建变量。
#include <stdio.h> void test() { static int a = 5; printf("%d ", ++a); } int main() { for(int i = 0 ; i < 10 ; i++){ test(); } return 0; }
返回 : 6 7 8 9 10 11 12 13 14 15
原因 : 创建的静态变量存放在静态区,只有在程序结束后才会销毁变量。此时循环创建的静态变量a实际上都指向同一个地址。下面代码展现 :
✨实际上每次创建的局部变量每次也都指向同一个地址,但是由于他存放在栈区中,当出了作用域以后,这个变量就会被释放,存放的值也就会被销毁。
二,静态全局变量
*在此之前我会先介绍extern关键字和全局变量的外部链接属性,可以选择性跳过这段。
- extern关键字 : 表明变量或者函数是定义在其他其他文件中的,也就是当我们调用外部文件的变量和函数时,我们可以使用extern关键字进行声明,表明这个变量或是内存已经被定义了,并且会自动去找到这个变量或是函数所在的文件,
这个博主写的文章已经很好啦,我们直接去学习一下extern关键字吧。C语言extern关键字用法和理解
- 外部链接属性 :在一个 .c 文件里面定义一个全局变量,在另外一个.c文件里面可以使用这个全局变量,只需要用一个extern声明一下就可以了。
✨:sparkles那么如果不想让定义的全局变量被外部链接使用怎么办呢? 这时候可以使用静态全局变量。代码如下 :
- 就是在定义全局变量的时候在前面加上一个static关键字,这样再次运行就会报错 。如 :
✨所以,静态全局变量可以把全局变量的外部链接属性变成内部链接属性,使得这个变量只能在自己所在的.c文件内部使用,不能在其他的.c文件内部使用。也就是让全局变量的作用域变小了。
三,静态函数
📢 : 其实和静态全局变量是相似的,函数也是具有外部链接属性,可以被其他的.c文件内部使用,为了不被外部的.c文件使用,就可以使用static修饰,变成具有内部链接属性的函数。由于更静态全局变量相似,直接利用代码理解 :
- 上面的代码表现了函数的外链接属性 。利用extern关键字是可以使用外部函数的。
- 要是想内部函数不被外部.c文件使用,也就是将其变成内部链接属性,可以使用static关键字,这样test.c文件就会报错,无法使用sum函数。
😄新人创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看。😄