- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 6.5.2 外部对象的连接属性 多文件程序举例 源文件F1.c的内容 #include stdio.h extern void func2(void); /* 声明函数func2 */ void func1(); /* 声明函数func1 */ int x=1; /* 定义外部全局变量x */ int main(void) { func1(); } void func1() /* 定义外部函数func1 */ { x++; printf(“\n %d”,x); func2(); } void func3() /* 定义外部函数func3 */ { x++; printf(“\n %d”,x); } * * 6.5.2 外部对象的连接属性 源文件F2.c的内容: #include stdio.h extern void func3(); /* 声明函数func3 */ extern int x; /* 声明变量x */ void func4(void); /* 声明函数func4 */ static int y=1; /* 定义内部全局变量y */ void func2() /* 定义外部函数func2 */ { x++; y++; printf(“\n %d,%d”,x,y); func3(); func4(); } static void func4() /* 定义内部函数func4 */ { x++; y++; printf(“\n %d,%d”,x,y); } * * 6.5.2 外部对象的连接属性 宏名的特殊性 (1) 关键字可以用作宏名 (2) 从#define命令所在行开始到源文件结尾的代码段为该#define命令所定义宏名的作用域 例如: #define PI 3.14 PI:宏名,3.14:宏体 一个宏名作用域内出现的所有宏名引用在预处理时均被替换为宏体。 宏名不应与其作用域内函数定义及函数调用中出现的函数同名,也不应与变量同名。否则编译时会出现语法错误。 * * 6.5.2 外部对象的连接属性 例如: #define a 3 #define f 4 int main(void) { int a=1; /* 该行将被替换成“int 3=1;”,语法错 */ int x; x=f(2); /*该行被替换成“x=4(2);” ,语法错 */ } int f(int x) /*该行被替换成”int 4(int x )”,语法错 */ { return x*x; } * 6.6 变量的存储属性 6.6.1 变量的生命期属性 6.6.2 变量的存储器属性 * 6.6.1 变量的生命期属性 生命期属性反映程序运行时变量的存在状态 按照生命期属性分类变量 静态变量:存在周期与程序运行时间相同 动态变量:存在周期与定义它的代码块执行时间相同 * 6.6.1 变量的生命期属性 全局变量都是静态变量 形式参数都是动态变量 局部变量有静态变量、动态变量之分 ,由存储类型说明符决定。用static声明的局部变量是静态变量;用auto或register声明的局部变量是动态变量;省略存储类型说明符时系统默认为auto。 静态局部变量的存在周期与全局变量相同,作用域与局部变量相同。 * 6.6.1 变量的生命期属性 例1 动态局部变量存储特性 #include stdio.h void f(int x) { int y=0,i; printf(“x=%d y=%d ”,++x,++y); for(i=0;i2;i++){ int z=0; printf(“z=%d ”,++z); } } int main(void) { f(1); putchar(‘\n’); f(1); } 程序运行结果: x=2 y=1 z=1 z=1 x=2 y=1 z=1 z=1 * 6.6.1 变量的生命期属性 例2 计算 #include stdio.h long f ( int
原创力文档


文档评论(0)