aver在c语言中的作用,第12章 c语言中用户标识符的作用域及存储类.pdf

第十二章

第十二章

C语言中,标识符必须先定义,后使用.每个变量根

据位置和保存值的长短,它们都有不同的作用域和生

命期.

定义(definition):指给变量分配确定的存储单元.

说明(declaration):只是说明变量的性质,而并不分配

存储空间.

作用域:指变量在程序的某一部分中,是有定义的,可

以被C编译和连接程序所识别.这一特定的部分就是

该变量的作用域.

生命期:变量保存值的时间.

每个变量的作用域和它在程序中出现的位置有直接

的关系.据此我们可以划分为局部变量和全局变量.

§12.1局部变量,全局变量和存储分类

§12.1局部变量,全局变量和存储分类

在函数内部或复合语句内部定义的变量,称为局

部变量(也称内部变量).函数的形参也属于局部变量.

在函数外部定义的变量,称为全局变量(外部变量).

C语言中,有两种存储类别:一种是自动类,一种是静

态类.局部变量既可说明成自动类,也可以说明成静态

类;而全局变量只能是静态类.

有四个与两种存储类别有关的说明符,它们是

auto( 自动),register(寄存器),static(静态)和extern(外

部).如:

auto int i,j; int auto i,j;

存储类别确定了所说明对像在内存中的存储位置,从

而也确定了所说明对象的作用域和生存期.

函数返回地址, 自动

动态存储区(堆栈) 类别的局部变量

全局变量及静态变

静态存储区 量

程序代码区

§12.2局部变量及其作用域和生存器

§12.2局部变量及其作用域和生存器

一.auto变量

当在函数内部或复合语句内定义变量时,如果没有

指定存储类,或使用了auto说明符,系统就认为所定义

的变量具有自动类别.

float a; auto float a;

auto类型的变量存储单元被分配在内存的动态存储

区.每当进入函数体或复合语句时,系统自动为auto变

量分配存储单元;退出时自动释放这此存储单元另作

他用.因此,这类局部变量的作用域是从定义的位置起,

到函数体或复合语句结束为止.例如:

void sub(float a)

{ int i;

:

if(i>0)

{ int n;

:

printf("%d\n",n);

}

:

}

以上,变量i,a和n都是auto变量,但是i,a的作用域是

整个函数,而n的作用哉仅限于if子句内.

注意:局部变量的定义必须放在函数体或复合语句

中全部可执行语句之前.

所以自动类的局部变量的存储单元都是在进入其所

在的函数体或复合语句时生成,退出其所在的函数体

或复合语句时消失.(变成无定义).这就是自动类局部

变量的"生存期".当再次进行入函数体或复合语句时,

系统将为它们重新分配存储单元.因此变量的值不

可能被保留.由于随着函数的频繁调用,动态存储区

内为某个变量分配的存储单元位置随程序的运行而

改变.变量中的初值也就随之而变,所以末赋初值的

自动变量其值不确定,称为"无定义".

进入时生成,退出时消失,这样的优点可在各函数

之间造成信息隔离,不同函数中使用了同名变量也不

会相互影响,从而可避免因不慎赋值所导致的错误影

响到其他函数.

二.register变量

寄存器变量也是自动变量,它与auto变量的区别仅

在于:用register说明的变量建议编译程序将变量的值

保留在cpu的寄存器中,而不是像一般变量那样,占内

存单元.因此,访问register变量要比其他类型的变量

快得多.

(1)cpu中寄存器的数目是有限的.因此只能说明少

量的寄存器变量.

(2) 由于register变量的值是放在寄存器内而不是放

在内存中,所以register变量没有地址.不能求地址.

(3)register变量的说明应尽量靠近其使用的地方.用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值