1、静态全局变量(又称全局静态变量):   
   
  (1) 静态全局变量的定义:在全局变量前加一个static,使该变量只在这个源文件中可用。
  (2)全局变量与全局静态变量的区别:
          (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
            (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。   
   
      
   
  (3)静态全局变量的作用:   
   
  (a)不必担心其它源文件使用相同变量名,彼此相互独立。   
   
  (b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。   
   
  例如:一个程序由两个源文件组成,其中在一个源文件中定义了“int   n;”,在另一个源文件中定义了“static   int   n;”则程序给它们分别分配了不同的空间,两个值互不干扰。   
   
  例如:下面在file1.cpp中声明全局变量n,在file2.cpp中定义全局静态变量n。文件file1.cpp和file2.cpp单独编译都能通过,但连接时,file1.cpp中的变量n找不到定义,产生连接错误。   
      //   file1.cpp   
   
  #   include   <iostream.h>   
   
  void   fn()   
   
  extern   int   n;   
   
  void   main()   
   
  {   
   
  n=20;   
   
  cout<<n<<endl;   
   
  fn();   
   
  }   
   
  //   file2.cpp   
   
  #   include   <iostream.h>   
   
  static   int   n;     //   默认初始化为0,注意此处定义的n   只能在file2.cpp中使用。   
   
  void   fn()   
   
  {   
   
  n++;   
   
  cout<<n<<endl;   
   
  }   
   
      
   
  2、静态函数:使某个函数只在一个源文件中有效,不能被其他源文件所用。   
   
  定义:在函数前面加上static。   
   
  说明:函数的声明和定义默认情况下在整个程序中是extern的。   
   
  静态函数的效果:   
   
  (1)它允其他源文件建立并使用同名的函数,而不相互冲突。   
   
  (2)               声明为静态的函数不能被其他源文件所调用,因为它的名字不能得到。

static变量与普通变量的区别相关推荐

  1. static变量和普通变量的区别

    static变量和普通变量的区别: static全局变量与普通全局变量区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量区别:static局部变量 ...

  2. static变量、static函数与普通变量、普通函数的区别

    转自:http://blog.163.com/sunshine_linting/blog/static/44893323201191294825184/ 全局变量(外部变量)的说明之前再冠以stati ...

  3. 堆栈,静态变量和普通变量,静态函数和普通函数的区别

    首先简单介绍一下堆和栈的区别. 1.内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1).栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似 ...

  4. 变量声明和定义的区别

    转自:http://www.cnblogs.com/GavinDai/archive/2011/10/24/2222735.html 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候 ...

  5. java静态变量和实例变量的区别6_java静态变量的与实例变量的区别

    下面的为代码实现 /** * */ package com.b510.test; /** * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象, * 其中的实例变量才会被分配空间,才 ...

  6. 静态变量与实例变量的区别

    静态变量也叫类变量,这种变量前加了static修饰符.可以直接用类名调用,也可以用对象调用,而且所有对象的同一个类变量 都是共享同一块内存空间. 实例变量也叫对象变量,这种变量没有加static修饰符 ...

  7. volatile变量与普通变量的区别

    我们通常会用volatile实现一些需要线程安全的代码(也有很多人不敢用,因为不了解),但事实上volatile本身并不是线程安全的,相对于synchoronized,它有更多的使用局限性,只能限制在 ...

  8. 1.16 static关键字(静态变量和静态方法)

    在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有. 静态成员不依赖于类的特定实例,被 ...

  9. 全局变量、成员变量、类变量、静态变量、实例变量、局部变量的定义与区别

    全局变量 全局变量又叫成员变量,它是声明在类里,函数,静态语句块外的变量,全局变量又分为类变量(静态变量).实例变量两种. 通过代码来看一下: private int i;//实例变量 private ...

最新文章

  1. C语言 IP地址合法性判断 去除字符串首尾空格
  2. 责任心,内因还是外因?
  3. 阅读分析下列html,阅读下列说明和 HTML 文本,分析其中嵌入的 JavaScript. 脚本..._考试资料网...
  4. html加入购物车的动画,vue实现加入购物车动画
  5. 1-4flink概述
  6. 双对数坐标系matlab绘图,EXCEL自动计算液塑限并绘制图表至双对数坐标系.doc
  7. JDBC系列 之 JDBC层次结构和基本构成
  8. ios 点击出现另外一套tabbar_iOS 点击UITabBar触发刷新
  9. Linux 内核进程管理之进程ID【转】
  10. 【matplotlib笔记】sin图像与cos图像
  11. 使用HandBrake的视频压制及投稿教程
  12. 一份走心的iOS开发规范
  13. 面试经验总结——测试岗
  14. 明解C语言 【日】 柴田望洋 第十章 指针 代码清单和练习代码
  15. Spring微服务实战第2章 使用Spring Boot构建微服务
  16. suricata的netmap抓包模式安装
  17. 介绍理想工作计算机 英语作文,理想工作的英语作文7篇
  18. VBA 类模块理解和使用总结
  19. opencv回顾之Core module
  20. 0R电阻和1R电阻的用处

热门文章

  1. 2021-08-06随记(vertical-align, 顶线、底线、中线、基线,vue原理理解)
  2. php接入外汇购物,兑换难!这些外币最好别带回国
  3. 正则表达式-匹配中英文、字母和数字
  4. java字面量和符号引用
  5. Android 11 Audio框架探索之AudioTracK(二)
  6. 分享在实际项目中积累的硬件调试经验 - 调试方法,以及常见调试案例
  7. CAD三维图形转化成二维图形的过程具体的步骤
  8. 电子原理 半波整流与桥式整流Protues仿真电路
  9. linux设置合上电脑,[转载]笔记本上装CentOS 7 设置合上盖子不休眠
  10. 一致性 hash 算法 — CARP 2020/5/11 19:38