1.动态局部变量:也称局部变量、自动变量,是指在函数内部定义的自动变量,不带static修饰,作用域是定义该变量的子程序。在退出函数后,变量自带内存会自动释放。

2.静态局部变量:是指在函数内部定义的静态变量,带static修饰,作用域是定义该变量的子程序。只被定义和初始化一次,这种变量在函数退出后不会释放内存,且保持其值,下次调用时不再重新创造和初始化该变量,而是直接用上一次留下的值为基础来进行操作。直到程序退出时一起释放(生存期为整个源文件)。

3.动态全局变量:也称全局变量,是指在所有函数外定义的动态变量,作用域为整个程序,即可以在任何函数内使用,且可以被程序的其他文件所访问。只被定义和初始化一次,以后调用时值保持上一次的不变。

4.静态全局变量:是指在所有函数外定义的静态变量,作用域为整个程序,可以在定义它的文件内的任何地方被访问,不可以被程序的其他文件所访问。

5.跨文件引用全局变量:在一个程序的多个.c源文件中,可以在一个.c源文件中定义全局变量y_x,并且可以在别的另一个.c源文件中引用该变量y_x(引用前要声明)。函数和全局变量在C语言中可以跨文件引用,他们的连接范围是全局的,具有文件连接属性,函数和全局变量是可以跨文件看到的(直接影响就是:在a.c和b.c中各自定义了一个函数func(),名字相同但内容不同,编译报错)。

6.动态分配内存:指通过malloc,calloc,zalloc等函数申请的内存空间,这类空间在退出函数后不会自动释放,要释放只有通过free函数的调用,进行内存释放。

C语言中,局部变量可以和全局变量重名。当局部变量和全局变量同名时,在定义局部变量的子程序内,局部变量起作用,在其它地方全局变量起作用,即局部变量会屏蔽与之同名的全局变量,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

C语言变量的作用域和存储类型的更多相关文章

  1. C/C++中变量的作用域和存储类型简介

    写在开头 对于很多C/C++的初学者来说,很容易理不清变量的作用域和存储类型这一块的一些概念,也容易将其中的一些概念搞混淆.作为一个C/C++的初学者,笔者希望在这里能够尝试着去理一理这些较为繁杂的概 ...

  2. C和指针 3.9作用域、存储类型示例

    ; extern int b; static int c; int d( int e ) { ; register int b; ; extern int a; ... { int e; int a; ...

  3. C语言 变量的作用域和生命周期(转)

    转自 https://blog.csdn.net/u011616739/article/details/62052179 a.普通局部变量 属于某个{},在{}外部不能使用此变量,在{}内部是可以使用 ...

  4. C语言----变量及作用域 、 指针 、 指针和数组 、 进程空间 、 字符串

    1 使用程序来模拟放球.取球的问题 1.1 问题 栈是一种特殊的线性表,它的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称为运算受限的线性表. 栈的定义是限制仅在表的一端进行插入和删 ...

  5. C语言变量、函数的作用域及变量的存储方式

    一.变量的作用域和存储方式 在C语言中每个变量都有两种基本属性:数据类型.数据的存储类别. 数据类型很多人都已熟知,例如:字符型(char).整型(int).浮点型(float)等等.存储类别是指数据 ...

  6. C语言作用域、链接属性和存储类型

    C/C++中作用域详解 作用域 编译器可以确认的4种作用域-代码块作用域.文件作用域.函数作用域和原型作用域,一般来说,标识符(包括变量名和函数名)声明的位置决定它的作用域. (1)代码块作用域 一对 ...

  7. C06 变量和存储类型

    目录 全局变量 局部变量 存储类型 全局变量和局部变量 变量的作用域 作用域:某些事物起作用或有效的区域. 变量的使用范围称为变量的作用域. 变量的作用域决定了变量的可操作性和有效性. C语言变量的作 ...

  8. C语言中的作用域、链接属性与存储属性

    C语言中的作用域.链接属性与存储属性 一.作用域(scope) 代码块作用域 表示{}之间的区域,下例所示,a可以在不同的代码块里面定义. #include<stdio.h> int ma ...

  9. C和C指针小记(六)-基本声明、指针声明、typedef 、常量、作用域、链接属性、存储类型、static

    1.变量的声明 声明变量的基本形式: 说明符号(一个或者多个) 声明表达式列表 说明符 (specifier) 包含一些关键字,用于描述被声明的标识符的基本类型,它也可用户改变标识符的缺省存储类型和作 ...

随机推荐

  1. QT自定义消息

    1.派生QAbstractNativeEventFilter,重写nativeEventFilter()函数 #ifndef CMYMESSAGEHANDLER_H #define CMYMESSAG ...

  2. WEBGL threejs 1

    首先感谢国内的这些研究者,先驱们~~~~~ 文章内容来自于webgl中文网,感谢~~~ -------------------------------------------------------- ...

  3. hdu4870 高斯消元

    题意 一个人打比赛 ,rating 有p的概率 为加50分 有1-p的概率为 x-100分 最大值为 1000 最小值为0 有两个号 每次拿较小的号来提交 , 计算最后到达 1000分得期望场数是多少 ...

  4. TMC首秀:写作带给我生命的影响与感动

    蓦然回首,写作已陪伴了我十三个年头,横跨大学.读研.工作之初.直到现在.我将分四个小乐章,分享写作给我的生命带来的影响和感动. 第一乐章:治疗与励志 说起写作的缘由,虽然可以追溯到初高中时读过的一点文 ...

  5. 接口作为方法的参数或返回值——List接口

    接口作为方法的参数或返回值,源码可知,List为一个接口,ArraryList是的它的实现类: 其中,addNames方法中,入参和返回值都List接口,入参是多态的,编译看左,运行看右(访问成员方法 ...

  6. c# 对话框控件

    对话框也是一种窗体,通常调用对对话框相关类型的ShowDialog方法来弹出对话框,当用户关闭对话框后,该方法会返回一个DialogResult枚举值,通过该值就可以判断用户采取了什么操作,例如单击确 ...

  7. c# 控件的基类——Control

    控件的基类用于Windows窗体应用的控件都派生自Control类,并继承了许多通用成员,这些成员都是平时使用控件的过程中最常用的. Name:控件实例的名字,通常通过“属性”窗口设置,控件实例名称变 ...

  8. tomcat1章1

    package ex01.pyrmont; import java.net.Socket; import java.net.ServerSocket; import java.net.InetAddr ...

  9. python使用SAX解析xml

    python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件 在python中使用sax方式处理xml要先引入xml.s ...

  10. centos 安装MySQL全过程

    1.到chinaunix下载mysql 下载地址: http://download.chinaunix.net/download/0008000/7159.shtml 2.上传到CentOS服务器 本 ...