c语言程序设计教学资料第7章---函数.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(3)从变量值存放的位置来区分,可分为: 内存中静态存储区:静态局部变量、静态外部变量、外部变量。 内存中动态存储区:自动变量和形式参数。 CPU中的寄存器:寄存器变量。 (4) static对局部变量和全局变量的作用不同。对局部变量来说,它使变量由动态存储方式改变为静态存储方式。而对全局变量来说,它使变量局部化,但仍为静态存储方式。从作用域角度看,凡有static声明的,其作用域都是局限的,或者是局限于本函数内,或者局限于本文件内。 函数的功能要单一,不要涉及多用途的函数 函数的规模要小,尽量控制在50行代码以内 1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行 1991年对148000行代码的研究结果表明:小于143行的函数比更长的函数更容易维护 参数和返回值的规则 参数要书写完整,不要省略 对函数的入口参数进行有效性检查 没有参数和返回值时,用void填充 每个函数只有一个入口和一个出口,尽量不适用全局变量 尽量少适用静态局部变量,以避免函数具有“记忆”功能 函数设计原则 常见错误 课后习题 全局变量全部存储在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中占据固定的存储单元。 动态存储区中存放以下数据:函数形式参数、自动变量、函数调用时的返回值等。对这些数据,在函数调用开始时分配动态存储空间,函数结束时释放这些空间,在程序执行过程中,这种分配和释放是动态的,如果在一个程序中,两次调用同一函数,分配给此函数中局部变量的存储空间地址可能是不相同的。 变量的基本属性:变量名、变量类型、变量值 变量的其它属性: 作用域:程序中可引用该变量的区域 存储类别:变量存储在哪里 存储期:变量存活期 变量作用域即可以引用该变量的程序段 C语言中变量可以在三种位置进行定于: 函数内部的定于部分 函数内部的某一个复合语句内部 所有函数之外 变量定义的位置决定了变量的作用域 以上三种位置的变量分别对应于: 函数作用域 块作用域 文件作用域 在一个函数内部定于的变量成为局部变量。 在所有函数之外定义的变量成为全局变量。 变量作用域 函数作用域:若变量在函数内所有语句之前定义,则该变量具有函数作用域,只有在定义变量的函数内部才能使用这些变量。 块作用域:若变量在复合语句中定义,则其具有块作用域,只在复合语句范围内才能引用该变量。 文件作用域 。 文件作用域:若变量在函数外定义,则该变量具有文件作用域,从变量定义位置开始,到本文件结束为止的区域可以引用该变量。 说明: 同一文件中,允许全局变量和局部变量同名,在局部变量的作用域内,外部变量将被屏蔽不起作用。 允许函数定义部分定义的变量与该函数内部的复合语句中定义的变量同名。在复合语句执行时,哈数定义部分定义的变量是“隐藏的”,直到复合语句结束。 建议:尽量不要这么做,系统不会混淆,但并不意味着人也不会混淆。 例 外部变量与局部变量同名 #include stdio.h int a=3,b=5; /* a,b为外部变量*/ void main ( ) { int max(int a,int b); int a=8; /*a为局部变量 */ printf (″%d″, max (a,b)); /*全局变量b的作用范围*/ } max (int a, int b) /*a,b为局部变量 */ { int c; c=a>b?a∶b; 形参a、b作用范围 return (c); } 运行结果为 8 存储类别包括: 自动(auto) 静态(static) 寄存器(register) 外部(extern) 变量的存储类别与变量的作用域和生存期等信息存在一定的联系 变量的存储类别 (1)自动变量(auto变量) 定义格式: auto 类型名 变量名; (auto可有可无) 如果不专门声明存储类别,都是动态地分配存储空间的。 函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量),都属此类。在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。因此,这类局部变量称为自动变量。 (2)静态变量(static变量) 定义格式:static 类型名 变量名; 局部变量和全局变量都可以定义为static存储类别的变量。 具有静态存储类别的局部变量称为静态局部变量 具有静态存储类别的全局变量成为静态全局变量 (空字符); 全局变量具有全局作用域。全局

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档