| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> C++知识库 -> 浅谈C中static的作用 -> 正文阅读 |
|
|
[C++知识库]浅谈C中static的作用 |
|
tip.以下static仅为鄙人一点认知,希望各位能给提出宝贵的意见! 在引入static之前,我们先来看一看c语言中的存储空间:
(这些在后面会被用到) static可用来修饰:1.局部变量 2.全局变量 3.函数 1.局部变量我们先来看一看没有static修饰时的函数:
?运行结果:
?很明显,十个1,因为a为局部变量被存在了栈区。使用完一次后被销毁,之后再进入test函数时,又重新创建变量a,如此循环10次,运行10次test函数,于是就出现了10次1. 当我们用static修饰局部变量a时:
?运行结果:
?我们可以看到,1-10被打印了出来。 这是因为static将变量a从局部变量变成了静态变量,将a存储到了静态区,与全局变量有了相似的特征。我们知道全局变量的生命周期是伴随一整个工程的。所以在test函数执行完一遍后a不会被销毁,在下次调用时仍维持上次的值。 2.全局变量仍然先看不被static修饰时的情况: 创建两个源文件,一个创建全局变量,一个使用全局变量。
? ?在另一个源文件引用全局变量时要用extern声明一下。 运行结果:
全局变量a成功被引用。 ?当用static修饰时:
?结果为:
a无法被引用。 一个全局变量 在整个工程的其他文件内部能被使用,是因为全局变量具有外部链接的属性,而当一个全局变量被stati修饰时,这个全局变量的外部链接属性就变成了内部链接属性,使得这个全局变量只能在自己所在的源文件使用,其他文件不能再被使用。static修饰全局变量,让其外部链接属性变成了内部链接熟悉,从而使它的作用域变小了,而其生命周期不变。 3.函数static修饰函数与修饰全局变量作用相似。同样,我们先来看没有static修饰时:
运行结果:
?使用外部函数成功; 当我们用static修饰时:
? ?和static修饰全局变量道理一样, ?函数本来也是具有外部链接属性的,被static修饰的时候就变成了内部链接属性,这个函数只能在自己所在的源文件内部使用,不能再其他文件使用。 总结:1.当static修饰局部变量时,该变量被存到了静态区,因此其值在下次调用时仍维持上次的值; 2.修饰全局变量时,在本文件内的static全局变量内可以被模块内所用函数访问,但不能被模块外其它文件内的函数访问; 3.修饰函数时与修饰全局变量相同。只能在该文件内被调用,不能被外部文件调用。 感觉有用的老铁点个赞和关注再走啊!谢谢各位。 |
|
|
| C++知识库 最新文章 |
| 【C++】友元、嵌套类、异常、RTTI、类型转换 |
| 通讯录的思路与实现(C语言) |
| C++PrimerPlus 第七章 函数-C++的编程模块( |
| Problem C: 算法9-9~9-12:平衡二叉树的基本 |
| MSVC C++ UTF-8编程 |
| C++进阶 多态原理 |
| 简单string类c++实现 |
| 我的年度总结 |
| 【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
| c语言常见错误合集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/24 16:35:30- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |