C语言程序设计 第8章 函数(二).ppt

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

2005年3月 函数(续) 1、熟练掌握变量的作用域 2、理解并掌握变量的存储类别 3、理解内部函数和外部函数 1、局部变量和全局变量及其作用域 变量的作用域 float f1(int a) { int b,c; } char f2(int x,int y) { int i , j; } main() { int m,n; } 说明: (1) 主函数main中定义的变量m,n也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效,主函数也不能使用其他函数中定义的变量。 (2) 不同函数中可以使用相同名字的变量,它们代表不同的对象,在内存中占不同的单元,互不干扰。 (3) 形式参数也是局部变量.例如f1函数中的形参a只在f1函数中有效,其他函数不能调用. (4) 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效. void sub(int a,int b) { int c; a=a+b; b=b+a; c=b-a; printf(sub:\ta=%d b= %d c= %d\n,a,b,c); } main( ) { int a,b; scanf(“%d,%d”,a,b); sub(a,b); } 说明: int a = 5; void f(int x, int y) { int b,c; b=a+x; c=a-y; printf(%d %d %d\n,a,b,c); } 2、变量的存储类别及变量的生存期 变量的生存期与变量的存储分类 从变量的作用域(即从空间)角度来分,分为 从变量的生存期(即存在的时间)角度来分,分为 变量的存储类别 变量定义语句的一般形式 2.2 静态变量(static类别)   有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已经有值,就是上依次函数调用结束说的值。这是就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。 2.3 寄存器变量(register类别)——了解   一般情况下,变量(包括静态和动态)的值是存放在内存中的。如果一些变量使用频繁,则从内存中频繁存取会花费不少时间,为了提高执行效率,c允许将局部变量的值放在cpu的寄存器中,需要时直接在寄存器中取出数据参加运算,不必再到内存中去存取。   只有函数内定义的变量或形参可以定义为寄存器变量。寄存器变量的值保存在CPU的寄存器中。   受寄存器长度的限制,寄存器变量只能是char、int和指针类型的变量。   全局变量是在函数的外部定义的,它的作用域为从变量的定义处开始到本程序的末尾。在此作用域内,全局变量可以为程序中各个函数所引用,编译时分配在静态存储区中。   有时需要用extern来声明外部变量,以扩展外部变量的作用域。 外部变量声明的一般格式 【例】在一个文件内声明外部变量。 int p=1,q=5; float f1(int a) { extern char c1,c2; …… } char c1,c2; char f2(int x,int y) { …… } main( ) { …… } 【例】在多文件的程序中声明外部变量。 file1.c文件中程序如下: int i; main( ) { void f1( ),f2( ),f3( ); i=1; f1( ); printf(\tmain: i=%d,i); f2( ); printf(\tmain: i=%d,i); f3( ); printf(\tmain: i=%d\n,i); } void f1( ) { i++; printf(\nf1: i=%d,i); } 归纳变量的分类 局部变量及其作用域 变量的作用域:变量在程序中可以被使用的范围。 根据变量的作用域可以将变量分为局部变量和全局变量。 局部变量:在一个函数内部定义的变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。 问题:一个变量在程序的哪个函数中都能使用吗? … … … a,b,c 有效 x,y,i,j 有效 m,n有效 float f1(int a) { int b,c; } main() { int b,c; } … a,b,c 有效 b,c有效 … main() { int a,b; { int c; c=a+b; } } … … … C在此范围内有效 a,b在此范围内有效

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档