C语言STATIC用法

转自:http://blog.csdn.net/vagrantisme/article/details/4083722   

      1. static 变量
  静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。

  2. 静态局部变量
  静态局部变量属于静态存储方式,它具有以下特点:
  (1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
  (2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。
  (3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以 看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的 值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成 意外的副作用,因此仍以采用局部静态变量为宜。
  3.静态全局变量
  全局变量(外部变量)的说明之前再冠以static 就构 成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局 变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在 定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此 可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量 后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。
  4. static 函数…..
  内部函数和外部函数
  当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。
  1 内部函数(又称静态函数)
  如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。
  定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:
  static 函数类型 函数名(函数参数表)
  {……}
  关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。
  使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。
  2 外部函数
  外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:
  [extern] 函数类型 函数名(函数参数表)
  {……}
  调用外部函数时,需要对其进行说明:
  [extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……];
  案例]外部函数应用。
  (1)文件mainf.c
  main()
  { extern void input(…),process(…),output(…);
  input(…); process(…); output(…);
  }
  (2)文件subf1.c
  ……
  extern void input(……) /*定义外部函数*/
  {……}
  (3)文件subf2.c
  ……
  extern void process(……) /*定义外部 函数*/
  {……}
  (4)文件subf3.c
  ……
  extern void output(……) /*定义外部函数*/
  {……}

转载于:https://www.cnblogs.com/aBigRoybot/archive/2011/07/13/2250863.html

C语言STATIC用法相关推荐

  1. C语言 static用法

    例一: #include<stdio.h> int fun(int x){static int a=3;//static:一直储存数据a+=x;return a; } void main( ...

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

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

  3. python语言用法_Python语言-Jinja2用法

    本文主要向大家介绍了Python语言-Jinja2用法,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一:渲染模版要渲染一个模板,通过render_template方法即可.@a ...

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

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

  5. C语言static 具体分析

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

  6. c语言指针用法有哪些

    c语言指针用法: 一,指针定义: 指针变量的取值范围取值0~4G,是一种数据类型(无符号整数,代表了内存编号).它可以用来定义变量(与int.long一样),与int.long不同的它存储整数代表了内 ...

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

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

  8. Java static用法代码讲解

    static用法由很多很好的文章,下面代码是关于static一些用法以及错误的原因,可以思考一下输出结果会是什么 class Name{static String name;String nickna ...

  9. go 正则表达式分组匹配_Go语言正则表达式用法实例小结【查找、匹配、替换等】...

    本文实例讲述了Go语言正则表达式用法.分享给大家供大家参考,具体如下: Go语言的正则表达式使用很简单,示例代码: 复制代码 代码如下: package test import ( "fmt ...

最新文章

  1. 好久没更新了,马上回来,精彩继续
  2. KL-divergence
  3. 如何从头到脚彻底解决一个MySQL Bug
  4. 携号转网全面启动后,新诈骗套路也跟上了!一招教你识别!
  5. python报“IndentationError: unexpected indent“的解决方法
  6. 【最佳实践】【Blend】Triggers、Actions 和 Behaviors
  7. 基于socketio 写一个聊天室
  8. 写一个自己的javascript库
  9. H3CSE园区-Smart Link和Monitor Link
  10. TensorFlow学习笔记(二)把数字标签转化成onehot标签
  11. edgexfoundry docker 容器化部署 ubuntu16.4 跑起来 go0.6.0 版
  12. 解决vue项目出现Navigating to current location (XXX) is not allowed 报错
  13. 全栈开发-IDE介绍与设置、字符串格式化、数据类型、for循环
  14. C# label換行
  15. 计算机基础知识图谱,基于知识图谱的大学计算机基础习题推荐方法技术
  16. c++算法新水果取名
  17. 秒级处理海量数据,浙江移动大数据平台是怎么做到的?
  18. MySQL创建函数错误
  19. Mac 电脑启动的快捷键
  20. Visual Studio 2013 - Visual Studio 2015 VA 百度网盘下载

热门文章

  1. 解决使用adb卸载应用失败的问题
  2. gif tools
  3. ROS与Arduino学习(六)Logging日志
  4. C语言 字符串的声明与使用
  5. 【网络流24题----09】方格取数问题
  6. ActiveMQ入门实例
  7. CSS中的text-shadow。
  8. c++中基本的语法问题
  9. Mvc 学习笔记(一)
  10. 【零基础学习iOS开发】【02-C语言】05-进制