c语言中static关键字的作用

简介: c语言中static关键字的作用

1.什么是关键字呢?

     C语言关键字是指被C语言编译器预定义并具有特殊含义的保留字。就像是我们人体的各个器官,每个关键字都有着自己特有的的功能。

2.常见的关键字有哪一些呢?

auto  break   case  char  const   continue  default  do   double else  enum  
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while


3.关键字static的作用:

static翻译成汉语是静态的意思。在c语言中,static是用来修饰变量和函数的。

1、修饰局部变量-称为静态局部变量。

2、修饰全局变量-称为静态全局变量。

3、修饰函数-成为静态函数。

3.1.static修饰局部变量

我们先看以下代码:

如果执行以上代码,结果很明显:

由于变量b是在函数test()里面的局部变量,每次执行函数都会重新生成变量b,结束后又会销毁变量b,所以无论执行多少次test(),其结果都是一样的。

现在我们用static修饰变量b,结果会发生什么呢?

这里我们可以看到,结果发生了变化,为什么会这样呢?

这是因为,用static修饰的局部变量的本质就是使得该变量的存储位置发生了变化。本来局部变量存放在栈区,被static修饰后就存放在静态区了,而静态区存放的变量生命周期较长,在test()结束时并不会被销毁,到下一次执行的时候,由于变量b已经存在,就不会执行生成变量b这行代码。所以变量b一直存在,它的值也就随着b+=2一直变化。

3.2.static修饰全部变量

不用static修饰的全局变量:

用static修饰全局变量:

其结果:

报错了!我们发现用static修饰的全局变量只能在源文件内部自己使用,不能在其他源文件中使用。

这是因为本来全局变量是具有外部链接属性的,也就是可以供外部源文件使用,而如果被static修饰后,就会变成内部链接属性,也就是说此时的变量value只能在自己的源文件内部使用。

3.2.static修饰函数

来看以下代码:

这里我们定义了一个Mx()函数,用来求俩个整数的最大值,很明显,执行程序后会c的结果是10:

现在我们用static修饰 :

其结果:

这里报错提示为:没有找到Mx()函数,无法解析。

其实函数也是具有外部链接属性的,跟全局变量一样一旦被static修饰后就变成了内部链接属性,也就不能在源文件外部被调用了。

以上就是static关键字的常见的作用以及用法,如果想要更加深刻的了解static的机制,最好再去了解一下计算机的内存分区,以及各个区块的作用。感谢大家的阅读,如果以上有错误的地方,请及时指出来!谢谢大家。

相关文章
|
2月前
|
C语言
【C语言】break 关键字详解
- `break` 关键字用于提前退出循环体或 `switch` 语句的执行。 - 在 `for`、`while` 和 `do-while` 循环中,`break` 可以帮助程序在满足特定条件时退出循环。 - 在 `switch` 语句中,`break` 用于终止 `case` 代码块的执行,避免代码“穿透”到下一个 `case`。 - 注意 `break` 只会退出最内层的循环或 `switch` 语句,确保在嵌套结构中正确使用 `break` 以避免意外的控制流行为。
150 2
|
2月前
|
传感器 安全 编译器
【C语言】enum 关键字详解
`enum`关键字在C语言中提供了一种简洁而高效的方法来定义一组相关的常量。通过使用枚举,可以提高代码的可读性、可维护性,并减少错误的发生。在实际应用中,枚举广泛用于表示状态、命令、错误码等,为开发者提供了更清晰的代码结构和更方便的调试手段。通过合理使用枚举,可以编写出更高质量、更易维护的C语言程序。
149 2
|
2月前
|
缓存 安全 编译器
【C语言】volatile 关键字详解
`volatile` 关键字在 C 语言中用于防止编译器对某些变量进行优化,确保每次访问该变量时都直接从内存中读取最新的值。它主要用于处理硬件寄存器和多线程中的共享变量。然而,`volatile` 不保证操作的原子性和顺序,因此在多线程环境中,仍然需要适当的同步机制来确保线程安全。
89 2
|
2月前
|
存储 编译器 程序员
【C语言】auto 关键字详解
`auto` 关键字用于声明局部变量的自动存储类,其作用主要体现在变量的生命周期上。尽管现代C语言中 `auto` 的使用较少,理解其历史背景和作用对于掌握C语言的存储类及变量管理仍然很重要。局部变量默认即为 `auto` 类型,因此在实际编程中,通常不需要显式声明 `auto`。了解 `auto` 关键字有助于更好地理解C语言的存储类及其在不同场景中的应用。
99 1
|
2月前
|
C语言
【C语言】continue 关键字详解
`continue` 关键字在 C 语言中用于跳过当前循环中的剩余代码,并立即开始下一次迭代。它主要用于控制循环中的流程,使程序在满足特定条件时跳过某些代码。
165 1
【C语言】continue 关键字详解
|
2月前
|
C语言
【C语言】return 关键字详解 -《回家的诱惑 ! 》
`return` 关键字在 C 语言中用于终止函数的执行,并将控制权返回给调用者。根据函数的类型,`return` 还可以返回一个值。它是函数控制流中的重要组成部分。
118 2
|
2月前
|
存储 人工智能 程序员
【C语言】一篇通关所有 “关键字”,值得收藏篇!
关键字是编程语言预定义的保留词,代表特定的操作或结构。C语言中的关键字用于定义变量类型、控制语句、存储类、数据类型等。使用这些关键字可以创建函数、控制程序的流程、声明变量和常量等。
237 0
|
4月前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
105 10
|
存储 编译器 C语言
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
391 0
|
9月前
|
C语言
C语言中关键字static的三种用法
C语言中关键字static的三种用法
119 0

热门文章

最新文章