详解C语言中的Static关键字

 更新时间:2022年01月18日 15:29:47   作者:build.code  
这篇文章主要为大家介绍了C语言中Static关键字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

一、static关键字的基本含义

首先,static关键字的意思是静态的,用于修饰局部变量,全局变量和函数,修改其数据储存类型

1.局部变量:在任意一个函数内部定义的变量(不加static),初始值不确定,出函数自动销毁,存放于栈区。 使用static修饰这个变量时,编译器会把她初始化为零,存储于静态区,函数返回时值保持不变,出函数不销毁,下一次进入函数依然存在。根本原因——static修饰的局部变量存储在静态区。

2.全局变量 :普通全局变量定义在函数体外部,在静态区分配存储空间,编译器自动对其初始化。普通全局变量对整个工程可见,其他文件使用关键字extern外部声明后可以直接使用。 静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。 在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。

3.函数:在函数的返回类型前加上static,就是静态函数。例如:static int main() 静态函数只能在声明它的文件可见,其他文件不能引用该函数。不同文件可以使用相同名字静态函数 非静态函数可以在另一个文件直接引用。

二、static关键字的用法

1.当使用普通局部变量时,如图,int a是一个局部变量,每次出函数后自动销毁,所以打印出"6666666666";

当使用静态局部变量时,如图。static修饰的局部变量除了局部范围后不会销毁,下一次进入函数依然存在。

2.如图 ,static声名的函数不能被另一个文件引用

三、static关键字的原理

因为static修饰的局部变量是存储在静态区的,static修饰全局变量时,实际改变的是变量的存储位置。 局部变量放在栈区的,被static修饰后放在了静态区。从而导致除了作用域依然存在,生命周期并没有结束

如图为存储区示意图

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 用c语言实现一个电话薄(附完整代码)

    用c语言实现一个电话薄(附完整代码)

    大家好,本篇文章主要讲的是用c语言实现一个电话薄(附完整代码),感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 基于C++和MFC开发象棋程序

    基于C++和MFC开发象棋程序

    这篇文章主要为大家详细介绍了基于C++和MFC开发象棋程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • c语言 malloc函数详解

    c语言 malloc函数详解

    这篇文章主要介绍了c语言 malloc函数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • vscode和cmake编译多个C++文件的实现方法

    vscode和cmake编译多个C++文件的实现方法

    这篇文章主要介绍了vscode和cmake编译多个C++文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 解决gcc编译报错unknown type name ‘bool‘问题

    解决gcc编译报错unknown type name ‘bool‘问题

    这篇文章主要介绍了解决gcc编译报错unknown type name ‘bool‘问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用C++实现插件模式时的避坑要点(推荐)

    使用C++实现插件模式时的避坑要点(推荐)

    这篇文章主要介绍了使用C++实现插件模式时的避坑要点,本文主要分析实践中常见的、因为对原理不清楚而搞出来的产品里的坑,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 使用C++17实现JSON库设计思路示例全解

    使用C++17实现JSON库设计思路示例全解

    这篇文章主要为大家介绍了使用C++17实现JSON库设计思路示例全解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • C语言可变参数列表的用法与深度剖析

    C语言可变参数列表的用法与深度剖析

    这篇文章主要给大家介绍了关于C语言可变参数列表的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • C语言柔性数组详解

    C语言柔性数组详解

    这篇文章主要介绍了C语言柔性数组,通过实例分析了不完整类型、结构体及柔性数组等概念,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • C++ 操作系统内存分配算法的实现详解

    C++ 操作系统内存分配算法的实现详解

    本文主要介绍了在动态分区管理方式下采用不同的分配算法实现主存分配和实现主存回收,旨在帮助学生理解在动态分区管理方式下应怎样实现主存空间的分配和回收。感兴趣的可以了解一下
    2021-11-11

最新评论