C语言 static的使用
你知道C语言中 static 有几种用法?
目录
1. static 可以修饰局部变量
2. static 可以修饰全局变量
3. static 可以修饰函数
1.static 可以修饰局部变量
首先让我看看这段代码
#include<stdio.h>
void test()
{int a = 1;a = a + 1;printf("%d", a);
}
int main()
{int i = 0;while (i < 10){test();i++;}return 0;
}
你认为输出的结果是什么呢?
那为什么结果是2222222222呢
因为局部变量 a 进入这个范围创建 出了这个范围销毁 所以结果都是2
当我们加上static 的结果又会是什么
那为什么加上 static 结果就不一样了
我们研究一下static的使用原理
我们的内存分为三大类
我们的局部变量放在栈区
而static把a放在了静态区 而在静态区的变量 出了他的范围是不销毁的
我们对比一下 可能更加直观
所以 static 修饰局部变量的时候,其实改变的是局部变量得存储位置
静态得局部变量是放在静态区,放在静态区的变量出了作用域是不会销毁的,相当于生命周期延长了。
补充 变量的作用域是不变的,只是生命周期延长了
2. static 可以修饰全局变量
我们再创建一个源文件
全局变量的作用域是整个工程
如果我们想引用另一个源文件的函数 这里我们不得不说 extern 这个关键字
如图
static 可以修饰全局变量 如果我们再全局变量前 加上static会是什么结果呢
此时就会报错
一个全局变量具有外部链接属性的 (就是可以被其他源文件引用)但是被static 修饰后外部链接属性就变成了内部链接属性 只能在自己所在的源文件内部使用不能在其他文件内部使用
所以再次调试的时候就会报错
那 static 修饰的全局变量的本质是 外部链接属性发生改变 而不是他的作用域变小
static 修饰全局变量的意义是 如果你定义了一个全局变量 别人用 extern 就可以随便使用
如果你不想让别人看 就可以用static .
3.static 可以修饰函数
我们用另一个源文件创建一个函数 如图
用 关键字extern 声明后 调试结果
这里我们在函数前加上static 又会是什么结果呢
其实一个函数本身具有外部链接属性 被static修饰后 外部链接属性变成了内部链接属性 只能在源2.c 内部使用 其他源文件无法使用 使用上感觉作用域变小
我们可以发现 static 修饰全局变量和修饰函数用法一样
总结一下
当我们使用一个局部变量 出了他的范围 不希望他被销毁下次进来之后还在 那我们就可以拿static 修饰
当我们希望一个全部变量 在他自己源文件使用 任意其他地方不想让别人看到 也可以用static修饰
当我们写的函数只是自己用一下 不希望别人引用 则也可以用static修
谢谢大家 我是一个正在努力的大学生!
C语言 static的使用相关推荐
- C语言static 具体分析
google在最后三页C语言static内容,可找到的资料非常少.无论是长篇大论不知所云的话,在关键位置或跳过,习的人来说參考性不是非常大.所以.我这篇博文博採众家之长,把互联网上的资料整合归类,并亲 ...
- C语言STATIC用法
C语言STATIC用法 转自:http://blog.csdn.net/vagrantisme/article/details/4083722 1. static 变量 静态变量的类型 说 ...
- C语言 static - C语言零基础入门教程
目录 一.static 简介 二.static 修饰变量 1.static 局部静态变量 2.static 全局静态变量 三.static 修饰函数 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...
- C语言static类型变量特点是,c语言static
c语言static[编辑] 概述 static在C语言中是静态存储类型的意思,用static声明的变量在函数调用结束后依然存在,也就是在整个程序中都能用这个变量. c语言: C语言是一门通用计算机编程 ...
- c语言staticint的作用,C语言 static 声明静态变量?大佬原来用它干这事!
原标题:C语言 static 声明静态变量?大佬原来用它干这事! C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都 ...
- C语言static和const的区别
C语言static和const的区别 static: 1.不考虑类,static的作用: 1)第一个作用:隐藏.使得全局变量和函数对其它文件不可见,同时避免了不同文件的命名冲突. 2) ...
- C语言 static静态变量的作用
C语言 static静态变量的作用 static c语言的变量种类 静态变量通过关键字 static 进行声明,该变量存储在数据段上,也就是内存上,可以改变变量的作用域和生命周期. 对于局部变量作用域 ...
- C语言static 详解
C语言static 关键字详解 http://blog.csdn.net/keyeagle/article/details/6708077
- c语言static(c语言static是什么意思)
怎样把C语言学好怎样把C语言学好?怎样把C语言学好怎样把C语言学 重要的是急不了的,要一步一步来,慢慢来,把每个知识都学好,烂熟于心,到时就能灵活运用,加油吧孩子.不难的,打好基础 什么是C语言 C语 ...
- C语言--static修饰变量
Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数. 1.Static修饰变量 按照作用范围的不同,变量分为局部变量和全局变量.如果用static修饰变量,不论这个变量是全局的还是 ...
最新文章
- 将java项目传输到centos7服务端
- Oracle 触发器使用实例
- 帮助你更好理解javascript中easing功能的网站 - Easings.net
- 10行Python代码自动清理电脑内重复文件,解放双手!
- POJ - 3694 Network(边双缩点+LCA+并查集优化)
- kill 进程_结束进程,查看后台进程
- linux generic什么意思_如何在 Ubuntu 中修复 VirtualBox 的 “rc=1908” 错误 | Linux 中国...
- mysql5.7 glibcxx_3.4.15_Percona Server安装可能出现的问题 version `GLIBCXX_3.4.15' not found ...
- win7必须重新启动计算机才能应用这些更改,专家支招:当商用计算机遇到必须重新启动才能生效的更新...
- mysql与php教程,php与Mysql
- winform窗体对象 单例模式与泛型结合
- java中一直gc_如果JVM在执行GC时一直在移动对象,那么它如何解析引用?
- 【MySQL】事务隔离级别
- 正则校验 4位数字_推荐收藏,工作中常用的正则表达式总结
- iOS 监听锁屏/解锁事件
- Linux下使用nmap扫描端口
- vuex中辅助函数写法
- 银行卡卡号识别(照片)python
- Excel中如何显示复杂公式中局部的计算结果,例如嵌套函数,使用多个函数
- oracle stdevp函数,适用于sql初学,学习sql语句的一些整理,其中大多是oracle的
热门文章
- (附源码)ssm欢欢宠物医院管理系统的设计与实现 毕业设计171734
- aws lambda使用_我们通过使用AWS Lambda服务机器学习模型学到了什么
- 字段处理——下划线转驼峰
- 信息增益matlab实现,信息增益matlab实现
- [python学习]写入古诗,并复制
- hd printer lexmark
- 马光远:经济数据创20年最差靠楼市拉动已不现实
- Laravel 好玩、好用扩展推荐(持续更新)
- Linux找不到端口设备,Linux - 与设备关联的端口
- python 归纳 (九)_html解析-lxml