变量的“存在性”与“可见性”new.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

变量的“存在性”与“可见性”

.一、变量的作用域与存储类型

一个C程序(*.EXE)由若干个C文件(*.C)组成,一个(*.C)文件由若干个C函数组成。函数内、外均可(根据需要)定义或声明变量。

【按作用域划分】内部变量、外部变量

内部变量:在函数内定义变量称为内部变量(局部);

外部变量:在函数外定义变量称为外部变量(全局);

二者区别:定义出现的位置。

【按存储类型划分】auto、static/register(动态、静态/寄存器变量)变量定义一般格

式:[存储类型]数据类型变量表

auto:动态:([存储类型]缺省时,系统默认为动态;)

位置:动态区

特点:程序运行时动态分配,每次调用时都重新赋初值,调用不赋初值时,其值不确定。

static:静态:

位置:静态区

特点:程序编译时静态分配,每次调用时不再重新赋初值,保留最后一次调用的值。

二者区别:存储位置不同,

register:寄存器:

位置:在CPU内;

特点:速度快;

补充说明:一般不用认为进行存储类型声明,系统编译时,根据需要自动声明register类型)

程序区

存储类型/声明

静态存储区

static

动态存储区

Auto/缺省

i=j程序使用内存存储空间分布:【可见性/作用域(屏蔽/扩展)说明/声明】

i=j

程序使用内存

存储空间分布:

i=j二、Static:用于变量和函数时的不同意义

i=j

1-Static:用于变量时,共性是:静态存储

(1)用于外部变量:代表是本*。C文件内私有变量,且静态存储

其他札C(即使用extern声明也)不能调用

(2)用于内部变量:代表是本函数内私有变量,且静态存储

2-Static:用于函数时,代表是本*。C文件私有函数

其他*。C(即使用extern声明也)不能调用

Static:静态的:用于

Static:静态的:用于外

变量

部乂里或

i=j

函数时,代表作用域

用于内部变量时,代表生存期

三、变量的“存在性”与“可见性”(简表)

存储区

生存期/

赋初值/性质

定义

位置

变量存储类别/声明位置

用:static声

明否?

可见性/作用域

性见一?ETJ44-1在可散性希与性致

*.exe

开始

结束

程序编译时一次性赋初值;

运行后,不再赋初值

运行时保留最后一次调用值

函数外

存储类别缺省:外部(全局)

*.exe全局可见

V

函数外

Static外部变量

仅在本*.C内可见/其它*.C不可见

X

函数

Static内部变量

函数内可见/函数外不可见

X

函数

调用

开始

结束

程序运行后,每次函数调用时重新赋初

值;调用结束

后,释放内存。不保留最后一次调用值

函数内

内部变量

函数内可见/函数外不可见

V

形参

表内

形参变量

函数内可见/函数外不可见

V

四、函数的形参与实参之间的数据传递

数据传递方向是单向的:实向形;

被调用函数的内可有多个retun(可供条件选择),但返回值只有一个。

Return^达式)中的返回值以函数类型不一致时,返回值以函数类型为准

。实参与形参表中变量,(大)类型、次序等必须一致

(小)类不一致时,编译时不报告错误,但系统自动做数据类型兼

容转换,转换规则:见前面第三章所述。转换方向:实参向形参。

*.形参变量与实参变量

有两(大)类—数值型和地址型/指针型

数值型:变量/数组元素,例如:

char、nit、floatdoublea[i]/(arrayelement)

地址型:数组名(代表地址[常量])/指针型(地址)变量;

实参与形参变量:都用数值型时,变量传递的“实质”是数值;

实参与形参变量:都用地址型时,变量传递的“实质”是地址;注:数值或地址,在计算机内实质上都是(二进制数)数值,但一个代表的是内存单元内的(内容)数值,而另一个代表的是内存单元的地址。故有传值与传址之分;

五、变量声明与定义之间区别

以inta;externa;为例:

inta;是定义,而externa;(是引用性)声明。

二者本质区别:

inta; 是定义,编译/(调用)时分配地址空间。

externa;(是引用性)声明,编译时只是通知系统a变量存在,它的作用是先在本*.C文件范围内找a,若找不到,则在本程序(*.exe文件)范围内的其它*.C文件找,。若再不到。则错误提示“xterna;”语句并不分配地址空间。

书写形式区别:

定义语句中可以没有类型说明符:“int”;而声明语句中无类型说明符

二、变量的“存在性”与“可见性”

本表(以后有时间时)待续(目前讲课暂时可用上页中的(简表)

存储区

生存期/存在性

变量

文档评论(0)

z190712l + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档