1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 对函数的 进一步讨论;变量的属性 数据类型: 存储属性 存储器类型:寄存器、内存;变量的存储类型 auto -----自动型 register-----寄存器型 static ------静态型 extern -----外部型 变量定义格式: [存储类型] 数据类型 变量表;;局部变量与全局变量 局部变量---内部变量 定义:在函数(或复合语句内)定义,其作用域是本函数(或复合语句) 说明: 形参属于局部变量 局部变量可用存储类型:auto、 register 、 static, 默认为auto main中定义的变量只在main中有效,不能因为在main函数中定义就在整个文件或程序中有效。 main函数也不能使用其它函数中定义的变量。 不同函数中的同名变量,占有不同内存单元,因此不会相互影响 复合语句中的变量;register(寄存器)变量 只有auto变量与形式参数可以作为register变量 register变量和auto变量不同之处在于register变量存放在寄存器中,因此比auto变量存取速度快。通常将频繁使用的变量放在寄存器中,以提高程序执行速度 不能对寄存器变量使用取地址运算符 计算机中寄存器的数量是有限的,而且寄存器的数据长度也是有限的。因此register变量不能定义太多,也不能是数据类型太大的变量(long、float、double型) 目前register变量定义通常是不必要的,优化的编译系统能够识别使用频繁的变量,并将其放到寄存器中;static(静态)变量 static变量存放在内存的静态存储区,在整个程序运行期间占用固定的内存单元。 系统在编译时为static变量分配空间并赋初值,对未赋值的内部static数值型变量,系统自动给它赋值为0;对未赋值的内部static字符型变量,自动赋值为空字符。因为在编译期时赋初值,所以只能赋一次初值且只能在定义时进行。 再次调用static内部变量时,static内部变量的值为上次调用结束时的值。 注意:static内部变量的作用域仍然是定义该变量的函数体(或复合语句)内部。; 定义 说明 次数: 只能1次 可说明多次 位置: 所有函数之外 函数内或函数外 分配内存: 分配内存,可初始化 不分配内存,不可初始化;全局变量---外部变量 有???范围:从定义或有extern声明的位置开始,直至它所在源程序文件的结束。; 若外部变量与局部变量同名,则外部变量被屏蔽;变量存储类型;练习 auto 变量的作用域;main( ) { void increment(void); increment( ); increment( ); increment( ); } void increment(void) { int x=0; x++; printf(%d\n,x); };例 变量的寿命与可见性;例 引用其它文件中的外部变量;7.2 内部函数和外部函数;内部函数 内部函数的定义格式如下: static 数据类型 函数名(形式参数表列) { 声明部分; 执行部分; } 说明:static类型函数只能被其所在文件中的函数调用,不能被其他文件中的函数调用;例如;7.3 编译预处理 作用:对源程序编译之前,对#开头的命令做一些预处理;如 if(x==YES) printf(correct!\n); else if (x==NO) printf(error!\n); 展开后: if(x==1) printf(correct!\n); else if (x==0) printf(error!\n);;带参数宏定义 一般形式: #define 宏名(参数表) 宏体;#define MAX(x,y) (x)(y)?(x):(y) ……. main( ) { int a,b,c,d,t; ……. t=MAX(a+b,c+d); …… } 宏展开:t=(a+b)(c+d)?(a+b):(c+d);;带参的宏与函数区别;文件包含 功能:一个源文件可将另一个源文件的内容全部包含 一般形式: #in

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档