网站大量收购独家精品文档,联系QQ:2885784924

C语言程序设计 任正云 ch4新.PPT

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 计算机网络体系结构 C语言程序设计 主编 任正云 中国水利水电出版社 4.4.5 存储类型小结 (2)从变量的存储时间(生存期外部变量(即非静态的外部变量,允许其他文件引用))来区分,有动态存储和静态存储两种类型。静态存储是程序整个运行时间都存在,而动态存储则是在调用函数时临时分配单元。 按变量的存储时间划分 动态存储 静态存储 自动变量(本函数内有效) 寄存器变量(本函数内有效) 形式参数(本函数内有效) 静态局部变量(函数内有效) 静态外部变量(本文件内有效) 外部变量(用extern声明后,其他文件可以引用) 4.4.5 存储类型小结 (3)从变量的存放位置来区分,可分为: 4.4.5 存储类型小结 (4)关于作用域和生存期的概念。从前面的叙述可以知道,对一个变量的属性可以从两个方面分析,一个是变量的作用域;一个是变量存在时间的长短,即生存期。前者是从空间的角度,后者是从时间的角度。二者有联系但不是一回事。 4.4.5 存储类型小结 图4-8 作用域示意 … 文件 filel . c int a ; void main () { f 2 () ; f 1 () ; } void f 1 () { auto int b ; f 2 () ; } void f 2 () { static int c ; } … … … … b 的作用域 c 的作用域 a 的作用域 4.4.5 存储类型小结 图4-9 生存期示意 4.4.5 存储类型小结 √ √ √ √ 外部变量 √ √(只限本文件) √ √ 静态外部变量 √ × √ √ 静态局部变量 × × √ √ 自动变量和寄存器变量 存在性 作用域 存在性 作用域 函数外 函数内 变量存储类别 表4-1 各种类型变量的作用域和存在性的情况 4.4.5 存储类型小结 (5)static对局部变量和全局变量的作用不同。对局部变量来说,它使变量由动态存储方式改变为静态存储方式。而对全局变量来说,它使变量局部化(仅限于本文件),但仍为静态存储方式。从作用域的角度看,凡有static声明的,其作用域都是局部的,或者局限于本函数内(静态局部变量),或者局限于本文件内(静态外部变量)。 4.5 编译预处理 #define和#include。 编译预处理是在编译前对源程序进行的一些预处理。 预处理由编译系统中的预处理程序按源程序中的预处理命令进行。 C语言的预处理命令均以“#”打头,末尾不加分号,以区别于C语句。 预处理命令可以出现在程序中的任何位置,其作用域是自出现点到所在源程序的末尾。 例如: 4.5.1 宏定义 在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。 宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。 在C语言中,“宏”分为有参数和无参数两种。 4.5.1 宏定义 1.无参宏定义 宏定义一般写在文件开头函数体的外面,有效范围是从定义宏命令之后到遇到终止宏定义命令#undef为止,否则其作用域将一直到源文件结束。 定义的一般形式为: #define 宏名 字符串 说明: 作为宏名的标识符习惯上用有意义且易理解的大写字母来表示,“字符串”可以是常数、表达式或格式串等。 #define PI 3.1415926 例如: 4.5.1 宏定义 说明: (1)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。 (2)如果在一行中写不下整个宏定义,需要用两行或更多行来书写时,只需在每行的最后一个字符的后面加上反斜杆“\”,并在下一行的最开始处接着写即可。 (3)宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。 4.5.1 宏定义 (5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。 (4)宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。 【例4.17】已知半径为5.0,计算以此为半径的圆的周长和面积,以及圆球体的体积。 #include stdio.h #define R 5.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档