- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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”;而声明语句中无类型说明符
二、变量的“存在性”与“可见性”
本表(以后有时间时)待续(目前讲课暂时可用上页中的(简表)
存储区
生存期/存在性
变量
您可能关注的文档
最近下载
- 草果栽培技术.ppt VIP
- 药物设计软件:Schrodinger二次开发_(16).Schrodinger插件开发与使用.docx VIP
- 浙江省9+1高中联盟2024-2025学年高二上学期11月期中考试物理试题(含答案).docx VIP
- 教育研究导论(宁虹主编)笔记.pdf VIP
- 药物设计软件:Schrodinger二次开发_(15).自定义分子力场与参数化.docx VIP
- 2019年高铁动车广告,高铁车身广告,高铁广告价格.pdf VIP
- 高考数学考点题型全归纳.pdf VIP
- 万华化学安全管理实践.pdf VIP
- 丹纳赫DBS管理系统.pptx VIP
- 金属焊接软件:SYSWELD二次开发_(6).焊接热源模型开发.docx VIP
文档评论(0)