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语言】break 关键字详解
- `break` 关键字用于提前退出循环体或 `switch` 语句的执行。 - 在 `for`、`while` 和 `do-while` 循环中,`break` 可以帮助程序在满足特定条件时退出循环。 - 在 `switch` 语句中,`break` 用于终止 `case` 代码块的执行,避免代码“穿透”到下一个 `case`。 - 注意 `break` 只会退出最内层的循环或 `switch` 语句,确保在嵌套结构中正确使用 `break` 以避免意外的控制流行为。
134 2
|
1月前
|
传感器 安全 编译器
【C语言】enum 关键字详解
`enum`关键字在C语言中提供了一种简洁而高效的方法来定义一组相关的常量。通过使用枚举,可以提高代码的可读性、可维护性,并减少错误的发生。在实际应用中,枚举广泛用于表示状态、命令、错误码等,为开发者提供了更清晰的代码结构和更方便的调试手段。通过合理使用枚举,可以编写出更高质量、更易维护的C语言程序。
138 2
|
1月前
|
存储 编译器 程序员
【C语言】auto 关键字详解
`auto` 关键字用于声明局部变量的自动存储类,其作用主要体现在变量的生命周期上。尽管现代C语言中 `auto` 的使用较少,理解其历史背景和作用对于掌握C语言的存储类及变量管理仍然很重要。局部变量默认即为 `auto` 类型,因此在实际编程中,通常不需要显式声明 `auto`。了解 `auto` 关键字有助于更好地理解C语言的存储类及其在不同场景中的应用。
74 1
|
1月前
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
124 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
1月前
|
C语言
【C语言】continue 关键字详解
`continue` 关键字在 C 语言中用于跳过当前循环中的剩余代码,并立即开始下一次迭代。它主要用于控制循环中的流程,使程序在满足特定条件时跳过某些代码。
141 1
【C语言】continue 关键字详解
|
1月前
|
C语言
【C语言】return 关键字详解 -《回家的诱惑 ! 》
`return` 关键字在 C 语言中用于终止函数的执行,并将控制权返回给调用者。根据函数的类型,`return` 还可以返回一个值。它是函数控制流中的重要组成部分。
102 2
|
1月前
|
存储 人工智能 程序员
【C语言】一篇通关所有 “关键字”,值得收藏篇!
关键字是编程语言预定义的保留词,代表特定的操作或结构。C语言中的关键字用于定义变量类型、控制语句、存储类、数据类型等。使用这些关键字可以创建函数、控制程序的流程、声明变量和常量等。
200 0
|
3月前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
89 10
|
存储 编译器 C语言
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
382 0
|
存储 Java 编译器
【C语言】静态关键字static的用法(详解)
不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。这篇文章主要介绍了C语言中静态关键字static的作用,对大家学习C语言非常有帮助。
194 0

热门文章

最新文章