C语言自学函数说课.ppt

  1. 1、本文档共93页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
考察静态局部变量的值。 #include stdio.h int main() { int f(int); int a=2,i; for(i=0;i3;i++) printf(“%d\n”,f(a)); return 0; } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } 若不赋初值,是0 若不赋初值,不确定 考察静态局部变量的值。 #include stdio.h int main() { int f(int); int a=2,i; for(i=0;i3;i++) printf(“%d\n”,f(a)); return 0; } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } 仅在本函数内有效 3.寄存器变量 将局部变量的值存放在CPU中的寄存器中,需要时直接从寄存器取出参加运算,这种变量叫做寄存器变量。 由于CPU对寄存器的存取速度远高于对内存的存取速度。为了提高程序的执行效率,如果一些局部变量使用频繁,可以将其定义为寄存器变量。 定义的一般形式: register 数据类型 变量名; 寄存器变量的应用。 #includestdio.h int main() { register int i; int sum=0; for(i=1;i=10000;i++) sum=sum+i; printf(sum is %d\n,sum); return 0; } sum is 寄存器变量属于动态存储变量,调用函数时,变量的值装入寄存器,函数调用结束时,释放相应的寄存器。因此,只有自动变量和形式参数可以定义为寄存器变量。 由于寄存器的数目有限,不能定义任意多个寄存器变量。 局部变量和全局变量的存储类别的含义的不同 局部变量 ?存储类别的作用是指定变量的存储方式以及变量的生存期。 全局变量?由于是在程序执行时分配存储单元的,并都存放在静态存储区,所以声明存储类别的作用是用于扩展或限制变量的作用域。 6.7.3 全局变量的存储类别 1.用extern声明全局变量 用extern对该变量进行声明,表示该变量是一个已经定义的外部变量。就可以在函数内合法地使用该变量,从而拓展全局变量的作用域。 形式: extern 数据类型 变量名; 或 extern 变量名; 扩展全局变量的作用域。 #includestdio.h int a=10; int main() { extern b,c; int max(int x,int y,int z); printf(%d\n,max(a,b,c)); return 0; } int b=30,c=20; int max(int x,int y,int z) { int m; m=xy?x:y; return(zm?z:m);} 定义全局变量a 声明全局变量b、c 定义全局变量b、c (2)在多源文件的程序中声明全局变量 一个C程序可以由一个源文件构成,也可以由多个源文件构成。 如果一个C程序由多个源文件构成,在一个源文件中要引用另一个源文件中已定义的全局变量,同样可以用extern进行声明,将全局变量的作用域扩展到其它源文件中,为多个源文件共用。 调用函数,求3个整数中的最大者。 //file1.c #includestdio.h int a,b,c; int main() { int max(); printf(Input three integer numbers:); scanf(%d%d%d,a,b,c); printf(max is %d\n,max()); } //file2.c extern a,b,c; int max() { int z; z=ab?a:b; if(cz) z=c; return z; } 输入:4 8 5 运行结果:max is 8 编译时如果遇到extern声明,编译系统先在本文件内查找全局变量的定义,如果找到,就在本文件中扩展作用域;如果找不到,就在连接时从其他文件中查找全

文档评论(0)

舞林宝贝 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档