[计算机软件及应用]第6章 函数预编译预处理.ppt

[计算机软件及应用]第6章 函数预编译预处理.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]第6章 函数预编译预处理

全局变量有两个问题: 其一:当全局变量定义在后,引用它的函数在前时,如何使用该全局变量?这就需要把该全局变量的作用域延伸至该函数; 其二:能否使在某文件中定义的全局变量,在其它文件中无须再次定义而直接使用它呢?这就需要把全局变量的作用域进行延伸。 C语言可通过外部变量说明达到此目的。 定义 说明 次数: 只能1次 可说明多次 位置: 所有函数之外 函数内或函数外 分配内存:分配内存,可初始化 不分配内存,不可初始化 外部变量说明: extern 数据类型 变量表; 外部变量定义与外部变量说明不同 若外部变量与局部变量同名,则外部变量被屏蔽 例 外部变量定义与说明 extern int a,b; main() { printf(max=%d,max(a,b)); } int a=13,b=-8; int max(int x, int y) {int z; z=xy?x:y; return(z); } 运行结果:max=13 #include stdio.h int a,b; /*a,b为全局变量*/ void f1(int x ) { int t1,a; a= x* 4; t1= b * 3; b = 10; printf(f1:t1=%d,a=%d,b=%d\n, t1,a,b); } main( ) { a=2; b=4; /* 此a,b是全局变量,赋值 */ f1( 2); /* 调用函数f1( ) */ printf (main: a=%d,b=%d, a, b); } 程序输出结果为: f1:t1=12,a=8,b=10 main:a=2,b=10 结论:全局变量与局部变量同名时,局部变量 起作用,全局变量被屏蔽(不影响) 变量存储类型小结 静态 动态 存储方式 程序整个运行期间 函数调用开始至结束 生存期 编译时赋初值,只赋一次 每次函数调用时 赋初值 自动赋初值0或空字符 不确定 未赋初值 静态存储区 动态区 存储区 寄存器 局部变量 外部变量 作用域 定义变量的函数或复合语句内 本文件 其它文件 局部变量默认为auto型 register型变量个数受限,且不能为long, double, float型 局部static变量具有全局寿命和局部可见性 局部static变量具有可继承性 extern不是变量定义,可扩展外部变量作用域 register 局部static auto 外部static 外部 存储类别 6.7 内部函数、外部函数 C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。 6.7.1 内部函数(又称静态函数) 如果一个函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,则称为内部函数。 定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,定义格式如下: static 函数类型 函数名(函数参数表) {……} 如 static int fun(a,b,c) {……} 6.7.1 外部函数 在定义函数时,如果没有加关键字“static”,或者冠以 “extern” , 则表示此函数是外部函数,其定义格式为: [extern] 函数类型 函数名(函数参数表) {……} 调用外部函数时,必须对被调用的外部函数进行说明。 例/*FILE1*/ #includestdio.h int i; /*在FILE1中定义外部变量i*/ void func(); /*外部函数说明*/ main() { i=5; printf(file1:%d\n,i); func(); } /*FILE2*/ extern int i; /*外部变量说明,FILE2引用FILE1中定义的外部变量i*/ void func() { printf(file2:%d\n,i); } 该程序的运行结果是:file1:5 file2:5 6.8编译预处理 “编译预处理”是C语言编译系统的 一个组成部分。是在编译前由编译系统中的预处理程序对源程序的预处理命令进行加工。 源程序中的预处理命令均以“#”开头,结束不加分号,以区别源程序中的语句

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档