如果所有的变量按照下面的程序进行定义和声明,那么在main()函数中所有可用的变量为 ()。

void fun(int x)
{static int y;……return;
}
int z;
void main( )
{int a,b;fun(a);……
}

A.x,y
B.x,y,z
C.a,b,z
D.a,b,x,y,z

static静态变量的值在函数调用结束后会保持

x为static存储类型,只初始化一次,且生存期是整个和程序相同的,即函数推出后x的值也不改变,下次调用时继续保持的

**静态变量(Static Variable)**在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。

局部变量(Local Variable):定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。

全局变量(Global Variable):定义:所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。

(函数体外只能进行初始化,不能进行赋值运算)

全局变量全部存储在静态存储区。在程序开始执行过程中给全局变量分配空间,程序执行完毕就释放空间。程序执行过程中固定的分配空间,而不需要动态进行分配是释放。

动态存储区主要存放以下数据:函数的形参、自动变量==(没有加static的局部变量)==、函数调用的现场现场保护和返回值。

动态存储区的数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。

auto 变量:
函数中的局部变量,如果不专门的声明为 static存储,都是动态分配存储空间。数据存储在动态存储区内。函数中的形参和函数中的变量都属于此类,调用该函数时候系统自动的分配空间,在函数结束的时候,释放该空间。这些局部变量被称为自动变量。自动变量用 auto关键字声明(可以省略auto )。

static 变量:
有时候希望我们调用的函数在释放的时候不消失能保留原值,这就需要定义为静态局部变量。用关键字 static声明。

参考:https://blog.csdn.net/u013355826/article/details/53224303

对全局变量,static静态变量的理解相关推荐

  1. static静态变量的理解

    静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期 ...

  2. 全局变量/static静态变量在section段中的分布

    (注:本实验在x86架构下gcc编译器下完成) 我们先做一个有关static变量的实验 #include <stdio.h>static char txbuf1[1021] ={0}; s ...

  3. 深入理解C语言系列之内存和地址的故事(虚拟内存分区、全局变量与静态变量、外部函数内部函数、选择性编译)

    文章目录 一.内存的分区 二.虚拟内存分区 三.变量作用域与静态变量 四.外部函数与内部函数 五.include与define选择性编译 一.内存的分区 1.内存分为:物理内存和虚拟内存. 物理内存︰ ...

  4. java 静态全局变量_静态变量static和全局变量global

    静态变量static , 全局变量global 静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例.它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存, ...

  5. php之static静态变量详解

    php之static静态变量详解 一.总结 把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期. 把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围. 二.php之sta ...

  6. php的 静态变量,PHP之static静态变量详解

    在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...

  7. 全局变量和静态变量以及内存堆栈的关系

    在编写程序时,内存的控制是很重要的一部分.关于全局变量和局部变量,静态变量的关系如何?以及他们在内存在是存储于哪部分的?做个记录,以便往后查看. 1. 全局变量和静态变量 全局变量:又称外部变量,与之 ...

  8. C#中static静态变量的用法

    原文:C#中static静态变量的用法 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析 ...

  9. C语言 static静态变量

    静态变量类型说明符是static.静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都 ...

最新文章

  1. HTML: 字體設置
  2. 从零開始学androidlt;SeekBar滑动组件.二十二.gt;
  3. 转载:c输入空格字符串
  4. 数据结构(终极线段树篇)
  5. 【转】ASP.NET 2.0 - 导航(Navigation)SiteMap导航菜单关系
  6. mysql 索引合并_MySQL 索引合并(Index Merge)优化
  7. javascript 未来新方法的介绍
  8. HDU 5980 2016ICPC大连 J: Find Small A
  9. 基于大数据的图书推荐系统
  10. 基于FPGA的关于flash一些学习记录
  11. UmiJS介绍--快速上手(一)
  12. 联想服务器加装显卡无显示,标配11201355主板的启天M4330在 Win8系统加装独立显卡“无显无报警”...
  13. 【机器学习】验证集和测试集有什么区别
  14. 模电十:555定时器
  15. 网站规划通识:原型图绘制的一些注意事项
  16. Qpython SL4A服务调用GPS定位获取获取位置信息
  17. WINDOWS更改无线网卡MAC地址的方法
  18. git 查看自己秘钥_git生成和检查秘钥操作
  19. c语言实现矩阵行初等变换
  20. 2019新型冠状病毒来势汹汹我们无需恐慌(可防可控),但也不得不防(存在的“人传人”的风险)

热门文章

  1. html td显示隐藏,显示/隐藏Html TR/TD
  2. matlab读取文件夹下所有文件的字符串,MATLAB读取文件夹下所有文件的文件名并读取数据...
  3. mysql mvcc 隔离级别_隔离级别和MVCC
  4. sdram 时钟相位_零基础学FPGA (二十五)必会! 从静态时序分析到SDRAM时序收敛(下篇)...
  5. JavaWeb应用开发实验报告下载(共12个)
  6. 求护士的心理阴影面积 | 今日最佳
  7. 那些不回微信的人,都在看什么?
  8. Android 防火墙 知乎,知乎回应:防火墙太“坑爹” 正检查用户隐私是否有泄露...
  9. 四位数码管树莓派c语言,用树莓派和四位数码管模块做一个时钟
  10. 工作原理是什么_磁翻板液位计工作原理是什么?