| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:39:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |