如果所有的变量按照下面的程序进行定义和声明,那么在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. VS2005发布、生成网站时如何设置固定的dll文件名?
  2. java的rsa作用_java 中RSA的方式实现非对称加密的实例
  3. Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
  4. 一文讲透非标品的商品类目设计
  5. PyTorch 系列 | 数据加载和预处理教程
  6. 1.13 编程基础之综合应用 12 分数求和 4分 python
  7. linux增加 inode空间,linux 增加inode 的方法
  8. java字符串常量存哪里_浅谈JAVA中字符串常量的储存位置
  9. React学习笔记(五) 状态提升
  10. jar包上传maven私服出错Cannot deploy artifact from the local repository
  11. java boolean 大小_Java 中 boolean 类型占用多少个字节 [MD]
  12. SpringBoot 集成 Caffeine、Redis实现双重缓存方式(二)
  13. 算术平方根计算机保留根号,根号计算器
  14. android auto能用酷狗,完美支持Android车载设备,酷狗音乐pad版使用教程
  15. PCWorld 评选 52 个超实用网站
  16. bootstrap 页面垂直居中_bootstrap div垂直居中+水平居中保持响应式
  17. 最新二次开发仿包图网素材图片源码
  18. 普惠联接,让人类诗意地栖居在大地上
  19. 金山wps支持java接口开发吗_金山wps开放平台使用踩坑实录
  20. mermaid flowchart使用指南

热门文章

  1. ubuntu之find方法
  2. Android之Launcher分析和修改3——Launcher启动和初始化
  3. 如何解决secureCRT里面的The remote system refused the connection.
  4. Android之Google推荐的图片加载库Glide介绍
  5. javascript 高级程序设计_重读《JavaScript高级程序设计》
  6. 安装bigdesk后es无法启动_安装天正后,探索者无法双击启动?
  7. 将太阳光聚集起来可以用来做饭!?
  8. 女友的前男友教我该怎么照顾她......
  9. 新世纪英汉词典 | 今日最佳
  10. 2018 年最受欢迎的 Python 库,你都用过吗?