| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> [深度解剖C语言] --关键字 static -> 正文阅读 |
|
[Java知识库][深度解剖C语言] --关键字 static |
static ---最名不副实的关键字 目录 static的作用: 1.static修饰全局变量我们创建两个源文件,一个test.c,一个main.c 现在我们在test.c文件下定义一个全局变量
我们在main.c下进行调用打印g_val我们能访问到g_val吗? 答案是可以的 如果给g_val加上static修饰我们还能再main.c下访问到吗?
这时候答案是不行的! ?因此我们得到了static的第一个结论 结论1:static修饰全局变量,该变量只在本文件内被访问,不能在其他文件被直接访问。 2.static修饰函数?我们在test.c文件下写一个show()函数,请问在main.c文件能调用吗? ? ?答案是可以的。 那这时候给show()函数加上static,main.c下还能调用该函数吗? ? ? 答案是不可以的!因此我们可以得到第二个结论 结论2:static修饰函数,该函数只能在本文件内被访问,不能被其他文件访问,但是可以通过嵌套的方式调用,变相的封装的表现。 但是我们可以通过函数嵌套调用的方式调用show函数。 什么意思呢?就是在show函数的相同文件内创建一个新的函数,调用show函数,我们再在main.c文件下调用这个新的函数,已达到调用show()函数的目的。? 例:我们创建一个show_helper函数,来调用static修饰的show函数,我们再在main.c文件内调用show_helper函数。 ? ?结果: 通过嵌套的方式调用,变相的封装的表现。 因此static项目维护,可以提供安全保护。被static修饰,主要限制的是作用域。 3.static修饰局部变量
你知道这段代码,它的运行结果是什么吗? 通过结果我们发现他打印了10个1,其中,i是局部变量,具有临时性,函数调用时开辟空间并初始化,函数结束释放空间。 那么如果我们static修饰局部变量,即给int i? = 0;前static所修饰,结果还会一样吗?
?答案当然是不一样的,?我们发现,结果变成了1-10。因此我们可以得到第三个结论。 分析: 结论3:static修饰局部变量,更改该局部变量的生命周期。 生命周期:将临时变量的生命周期变成全局变量的生命周期。 作用域不变:作用域仍然是代码块内。 总结: static: 结论1:static修饰全局变量,该变量只在本文件内被访问,不能在其他文件被直接访问。 结论2:static修饰函数,该函数只能在本文件内被访问,不能被其他文件访问。但是可以通过嵌套的方式调用,变相的封装的表现。 结论3:static修饰局部变量,更改该局部变量的生命周期。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 9:18:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |