你知道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的使用相关推荐

  1. C语言static 具体分析

    google在最后三页C语言static内容,可找到的资料非常少.无论是长篇大论不知所云的话,在关键位置或跳过,习的人来说參考性不是非常大.所以.我这篇博文博採众家之长,把互联网上的资料整合归类,并亲 ...

  2. C语言STATIC用法

    C语言STATIC用法 转自:http://blog.csdn.net/vagrantisme/article/details/4083722       1. static 变量 静态变量的类型 说 ...

  3. C语言 static - C语言零基础入门教程

    目录 一.static 简介 二.static 修饰变量 1.static 局部静态变量 2.static 全局静态变量 三.static 修饰函数 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...

  4. C语言static类型变量特点是,c语言static

    c语言static[编辑] 概述 static在C语言中是静态存储类型的意思,用static声明的变量在函数调用结束后依然存在,也就是在整个程序中都能用这个变量. c语言: C语言是一门通用计算机编程 ...

  5. c语言staticint的作用,C语言 static 声明静态变量?大佬原来用它干这事!

    原标题:C语言 static 声明静态变量?大佬原来用它干这事! C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都 ...

  6. C语言static和const的区别

    C语言static和const的区别 static: 1.不考虑类,static的作用:     1)第一个作用:隐藏.使得全局变量和函数对其它文件不可见,同时避免了不同文件的命名冲突.     2) ...

  7. C语言 static静态变量的作用

    C语言 static静态变量的作用 static c语言的变量种类 静态变量通过关键字 static 进行声明,该变量存储在数据段上,也就是内存上,可以改变变量的作用域和生命周期. 对于局部变量作用域 ...

  8. C语言static 详解

    C语言static 关键字详解 http://blog.csdn.net/keyeagle/article/details/6708077

  9. c语言static(c语言static是什么意思)

    怎样把C语言学好怎样把C语言学好?怎样把C语言学好怎样把C语言学 重要的是急不了的,要一步一步来,慢慢来,把每个知识都学好,烂熟于心,到时就能灵活运用,加油吧孩子.不难的,打好基础 什么是C语言 C语 ...

  10. C语言--static修饰变量

    Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数. 1.Static修饰变量 按照作用范围的不同,变量分为局部变量和全局变量.如果用static修饰变量,不论这个变量是全局的还是 ...

最新文章

  1. 将java项目传输到centos7服务端
  2. Oracle 触发器使用实例
  3. 帮助你更好理解javascript中easing功能的网站 - Easings.net
  4. 10行Python代码自动清理电脑内重复文件,解放双手!
  5. POJ - 3694 Network(边双缩点+LCA+并查集优化)
  6. kill 进程_结束进程,查看后台进程
  7. linux generic什么意思_如何在 Ubuntu 中修复 VirtualBox 的 “rc=1908” 错误 | Linux 中国...
  8. mysql5.7 glibcxx_3.4.15_Percona Server安装可能出现的问题 version `GLIBCXX_3.4.15' not found ...
  9. win7必须重新启动计算机才能应用这些更改,专家支招:当商用计算机遇到必须重新启动才能生效的更新...
  10. mysql与php教程,php与Mysql
  11. winform窗体对象 单例模式与泛型结合
  12. java中一直gc_如果JVM在执行GC时一直在移动对象,那么它如何解析引用?
  13. 【MySQL】事务隔离级别
  14. 正则校验 4位数字_推荐收藏,工作中常用的正则表达式总结
  15. iOS 监听锁屏/解锁事件
  16. Linux下使用nmap扫描端口
  17. vuex中辅助函数写法
  18. 银行卡卡号识别(照片)python
  19. Excel中如何显示复杂公式中局部的计算结果,例如嵌套函数,使用多个函数
  20. oracle stdevp函数,适用于sql初学,学习sql语句的一些整理,其中大多是oracle的

热门文章

  1. (附源码)ssm欢欢宠物医院管理系统的设计与实现 毕业设计171734
  2. aws lambda使用_我们通过使用AWS Lambda服务机器学习模型学到了什么
  3. 字段处理——下划线转驼峰
  4. 信息增益matlab实现,信息增益matlab实现
  5. [python学习]写入古诗,并复制
  6. hd printer lexmark
  7. 马光远:经济数据创20年最差靠楼市拉动已不现实
  8. Laravel 好玩、好用扩展推荐(持续更新)
  9. Linux找不到端口设备,Linux - 与设备关联的端口
  10. python 归纳 (九)_html解析-lxml