C语言中关键字static的三种用法

简介: C语言中关键字static的三种用法

📢 : 关键字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函数。

😄新人创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看。😄

相关文章
|
1月前
|
算法 编译器 C语言
C语言猜数字小游戏(也包含python实现的用法)
本文基于VS2022、pycharm和前面的知识,写一个凭借分支与循环的小游戏,比如: 写一个猜数字游戏 游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 在pyhton中生成随机数是比较简单的,可以直接导入random的包,直接生成随机数,导致写猜数字小游戏变成了判读语句和循环语句嵌套就能写出来,所以我不做过多的介绍了,可以直接看后面的代码展示,想了解更多的python可看python的基础知识,这里面有我在学习python的过程中写的笔记
31 0
|
1月前
|
程序员 C语言
在C语言中,typedef是一种用来创建新的数据类型名的关键字
在C语言中,typedef是一种用来创建新的数据类型名的关键字
9 0
|
1月前
|
存储 编译器 C语言
C语言的关键字
C语言的关键字
13 0
|
1月前
|
存储 编译器 C语言
c语言中的关键字
c语言中的关键字
9 0
|
1月前
|
编译器 程序员 Linux
深入理解C语言中的return关键字与函数返回机制
深入理解C语言中的return关键字与函数返回机制
|
8月前
|
存储 编译器 C语言
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
221 0
|
8月前
|
存储 Java 编译器
【C语言】静态关键字static的用法(详解)
不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。这篇文章主要介绍了C语言中静态关键字static的作用,对大家学习C语言非常有帮助。
102 0
|
10月前
|
C语言
C语言关键字static的三种用法
作用域和生命周期的介绍 static修饰局部变量 static修饰全部变量 static修饰函数 作用域和生命周期的介绍 什么样的变量称为局部变量呢?
|
10月前
|
存储 编译器 C语言
C语言关键字之extern和static
C语言关键字之extern和static
|
11月前
|
存储 C语言
初识C语言——关键字static的作用
初识C语言——关键字static的作用
64 0