欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言程序设计第六章.ppt

    • 资源ID:70102895       资源大小:875.50KB        全文页数:43页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计第六章.ppt

    第第第第6 6 6 6章章章章 函函函函 数数数数制作人:李敏制作人:李敏制作人:李敏制作人:李敏第第6 6章:函章:函 数数 u学习的意义学习的意义 模块化程序设计方法:模块化程序设计方法:模块化程序设计方法:模块化程序设计方法:人们在求解某个复杂问题时,通常采用逐步分解、分而人们在求解某个复杂问题时,通常采用逐步分解、分而人们在求解某个复杂问题时,通常采用逐步分解、分而人们在求解某个复杂问题时,通常采用逐步分解、分而治之的方法,也就是将一个大问题分解成若干个比较容易求治之的方法,也就是将一个大问题分解成若干个比较容易求治之的方法,也就是将一个大问题分解成若干个比较容易求治之的方法,也就是将一个大问题分解成若干个比较容易求解的小问题,然后分别求解。程序员在设计一个复杂的应用解的小问题,然后分别求解。程序员在设计一个复杂的应用解的小问题,然后分别求解。程序员在设计一个复杂的应用解的小问题,然后分别求解。程序员在设计一个复杂的应用程序时,往往也是把整个程序划分成若干个功能较为单一的程序时,往往也是把整个程序划分成若干个功能较为单一的程序时,往往也是把整个程序划分成若干个功能较为单一的程序时,往往也是把整个程序划分成若干个功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块象程序模块,然后分别予以实现,最后再把所有的程序模块象程序模块,然后分别予以实现,最后再把所有的程序模块象程序模块,然后分别予以实现,最后再把所有的程序模块象达积木一样装配起来,这种在程序设计中分而治之的策略,达积木一样装配起来,这种在程序设计中分而治之的策略,达积木一样装配起来,这种在程序设计中分而治之的策略,达积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。被称为模块化程序设计方法。被称为模块化程序设计方法。被称为模块化程序设计方法。u学习的意义学习的意义 C C C C语言程序语言程序语言程序语言程序C C C C语言函数语言函数语言函数语言函数u学习的意义学习的意义 使用函数,不仅可以实现程序的模块化,程序设计得简单使用函数,不仅可以实现程序的模块化,程序设计得简单使用函数,不仅可以实现程序的模块化,程序设计得简单使用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性。和直观,提高了程序的易读性和可维护性。和直观,提高了程序的易读性和可维护性。和直观,提高了程序的易读性和可维护性。编写自定义函数库。把一些常用的或某些特定功能的程序编写自定义函数库。把一些常用的或某些特定功能的程序编写自定义函数库。把一些常用的或某些特定功能的程序编写自定义函数库。把一些常用的或某些特定功能的程序制作成自己的函数库,以供随时调用,这样可以大大减轻日制作成自己的函数库,以供随时调用,这样可以大大减轻日制作成自己的函数库,以供随时调用,这样可以大大减轻日制作成自己的函数库,以供随时调用,这样可以大大减轻日后编写代码的工作量。后编写代码的工作量。后编写代码的工作量。后编写代码的工作量。通过对函数的学习,掌握模块化程序设计的理念,为将来通过对函数的学习,掌握模块化程序设计的理念,为将来通过对函数的学习,掌握模块化程序设计的理念,为将来通过对函数的学习,掌握模块化程序设计的理念,为将来进行团队合作,协同完成大型应用软件奠定一定的基础。进行团队合作,协同完成大型应用软件奠定一定的基础。进行团队合作,协同完成大型应用软件奠定一定的基础。进行团队合作,协同完成大型应用软件奠定一定的基础。u学习目标学习目标 正确理解函数在正确理解函数在正确理解函数在正确理解函数在C C C C语言程序设计中的作用和地位;语言程序设计中的作用和地位;语言程序设计中的作用和地位;语言程序设计中的作用和地位;理解函数、形参、实参、作用域、生存期的概念;理解函数、形参、实参、作用域、生存期的概念;理解函数、形参、实参、作用域、生存期的概念;理解函数、形参、实参、作用域、生存期的概念;掌握各种函数的定义、原型声明和调用的方法;掌握各种函数的定义、原型声明和调用的方法;掌握各种函数的定义、原型声明和调用的方法;掌握各种函数的定义、原型声明和调用的方法;理解全局变量、局部变量、静态变量、静态函数的作用理解全局变量、局部变量、静态变量、静态函数的作用理解全局变量、局部变量、静态变量、静态函数的作用理解全局变量、局部变量、静态变量、静态函数的作用域和生存期;域和生存期;域和生存期;域和生存期;掌握递归函数的编写规则;掌握递归函数的编写规则;掌握递归函数的编写规则;掌握递归函数的编写规则;u学习内容学习内容 函数概述函数概述函数概述函数概述 函数的定义与调用函数的定义与调用函数的定义与调用函数的定义与调用l l 无参数无返回值的函数无参数无返回值的函数无参数无返回值的函数无参数无返回值的函数l l 无参数有返回值的函数无参数有返回值的函数无参数有返回值的函数无参数有返回值的函数l l 带参数无返回值的函数带参数无返回值的函数带参数无返回值的函数带参数无返回值的函数l l 带参数有返回值的函数带参数有返回值的函数带参数有返回值的函数带参数有返回值的函数 函数参数传递的传递方式函数参数传递的传递方式函数参数传递的传递方式函数参数传递的传递方式 变量的作用域和生存期变量的作用域和生存期变量的作用域和生存期变量的作用域和生存期 变量的存储类型变量的存储类型变量的存储类型变量的存储类型 函数的作用域函数的作用域函数的作用域函数的作用域 函数应用综合举例函数应用综合举例函数应用综合举例函数应用综合举例 本章小结本章小结本章小结本章小结6 6.1 .1 函数概述函数概述 1 1 1 1、函数的概念、函数的概念、函数的概念、函数的概念 函数其实就是一段可以重复调用的、功能相对独立完整函数其实就是一段可以重复调用的、功能相对独立完整函数其实就是一段可以重复调用的、功能相对独立完整函数其实就是一段可以重复调用的、功能相对独立完整的程序段。的程序段。的程序段。的程序段。&C C C C是是是是函数式函数式函数式函数式语言语言语言语言&必须有且只能有一个名为必须有且只能有一个名为必须有且只能有一个名为必须有且只能有一个名为mainmainmainmain的主函数的主函数的主函数的主函数&C C程序的执行总是程序的执行总是程序的执行总是程序的执行总是从从从从mainmainmainmain函数开始,在函数开始,在函数开始,在函数开始,在mainmainmainmain中结束中结束中结束中结束&函数函数函数函数不能嵌套定义不能嵌套定义不能嵌套定义不能嵌套定义,可以可以可以可以嵌套嵌套嵌套嵌套调用调用调用调用2 2 2 2、函数的分类、函数的分类、函数的分类、函数的分类 从用户角度从用户角度从用户角度从用户角度l l 标准函数(库函数):由系统提供标准函数(库函数):由系统提供标准函数(库函数):由系统提供标准函数(库函数):由系统提供l l 用户自定义函数用户自定义函数用户自定义函数用户自定义函数 从函数形式从函数形式从函数形式从函数形式l l 无无无无参数参数参数参数函数函数函数函数 l l 有参数有参数有参数有参数函数函数函数函数l l 无无无无返回值返回值返回值返回值函数函数函数函数l l 有有有有返回值返回值返回值返回值函数函数函数函数使用库函数应注意:使用库函数应注意:使用库函数应注意:使用库函数应注意:1 1 1 1、函数功能、函数功能、函数功能、函数功能 2 2 2 2、函数参数的数目和顺序,及各参数意义和类型、函数参数的数目和顺序,及各参数意义和类型、函数参数的数目和顺序,及各参数意义和类型、函数参数的数目和顺序,及各参数意义和类型 3 3 3 3、函数返回值意义和类型、函数返回值意义和类型、函数返回值意义和类型、函数返回值意义和类型 4 4 4 4、需要使用的包含文件、需要使用的包含文件、需要使用的包含文件、需要使用的包含文件6 6.2 .2 函数的定义和调用函数的定义和调用 1 1 1 1、无参数无返回值的函数、无参数无返回值的函数、无参数无返回值的函数、无参数无返回值的函数 定义格式定义格式定义格式定义格式 void void 函数名函数名函数名函数名 (void)(void)变量声明部分变量声明部分变量声明部分变量声明部分 执行部分执行部分执行部分执行部分 函数体函数体函数体函数体空空空空类类类类型型型型,表表表表明明明明函函函函数数数数无无无无返返返返回回回回值值值值,不可省!不可省!不可省!不可省!表表表表明明明明无无无无参参参参数数数数,可缺省!可缺省!可缺省!可缺省!必必必必须须须须为为为为合合合合法法法法的的的的标识符标识符标识符标识符 函数用途函数用途函数用途函数用途 此类函数用于完成某项此类函数用于完成某项此类函数用于完成某项此类函数用于完成某项固定的固定的固定的固定的处理任务,执行完成后不处理任务,执行完成后不处理任务,执行完成后不处理任务,执行完成后不向调用者返回函数值。它类似于其它语言的过程。向调用者返回函数值。它类似于其它语言的过程。向调用者返回函数值。它类似于其它语言的过程。向调用者返回函数值。它类似于其它语言的过程。函数的原型声明函数的原型声明函数的原型声明函数的原型声明 void void 函数名函数名函数名函数名(void)(void);或或或或 void void 函数名函数名函数名函数名()();C C C C语言规定,对函数调用之前必须对其原型加以声明,语言规定,对函数调用之前必须对其原型加以声明,语言规定,对函数调用之前必须对其原型加以声明,语言规定,对函数调用之前必须对其原型加以声明,否则会出现编译错!否则会出现编译错!否则会出现编译错!否则会出现编译错!1 1 1 1、无参数无返回值的函数、无参数无返回值的函数、无参数无返回值的函数、无参数无返回值的函数 函数的调用函数的调用函数的调用函数的调用 函数名函数名函数名函数名()();注意:注意:注意:注意:不能将这种函数调用赋值给任何变量,因为它没有返不能将这种函数调用赋值给任何变量,因为它没有返不能将这种函数调用赋值给任何变量,因为它没有返不能将这种函数调用赋值给任何变量,因为它没有返回值。调用时回值。调用时回值。调用时回值。调用时,(,(,(,()中间不能有)中间不能有)中间不能有)中间不能有voidvoid。实例实例实例实例#include#include#include#include void printstar();void printstar();/声明声明声明声明printstarprintstar函数的原型函数的原型函数的原型函数的原型void main()void main()int a;int a;for(a=0;a10;a+)for(a=0;a10;a+)printstar();printstar();void printstar()void printstar()/函数的定义,无参数无返回值函数的定义,无参数无返回值函数的定义,无参数无返回值函数的定义,无参数无返回值 printf(*n);printf(*n);/函数体,没有声明变量函数体,没有声明变量函数体,没有声明变量函数体,没有声明变量 调用调用调用调用outputoutput函数函数函数函数 返回返回返回返回 注意:注意:对函数调用之前,必须要先声明或先对函数调用之前,必须要先声明或先定义,否则编译错定义,否则编译错!2 2 2 2、无参数有返回值的函数、无参数有返回值的函数、无参数有返回值的函数、无参数有返回值的函数 定义格式定义格式定义格式定义格式 返回值类型符返回值类型符返回值类型符返回值类型符 函数名函数名函数名函数名 (void)(void)变量声明部分变量声明部分变量声明部分变量声明部分 执行部分执行部分执行部分执行部分 函数体函数体函数体函数体可可可可 以以以以 为为为为 int,char,int,char,float,doublefloat,double等等等等,缺缺缺缺省省省省时时时时,默默默默认认认认为为为为intint型型型型表表表表明明明明无无无无参参参参数数数数,可缺省!可缺省!可缺省!可缺省!必必必必须须须须为为为为合合合合法法法法的的的的标识符标识符标识符标识符 函数用途函数用途函数用途函数用途 此类函数用于完成某项此类函数用于完成某项此类函数用于完成某项此类函数用于完成某项固定的固定的固定的固定的处理任务,执行完成后向处理任务,执行完成后向处理任务,执行完成后向处理任务,执行完成后向调用者调用者调用者调用者返回函数值返回函数值返回函数值返回函数值。函数的原型声明函数的原型声明函数的原型声明函数的原型声明 返回值类型符返回值类型符返回值类型符返回值类型符 函数名函数名函数名函数名(void)(void);或或或或 返回值类型符返回值类型符返回值类型符返回值类型符 函数名函数名函数名函数名()();2 2 2 2、无参数有返回值的函数、无参数有返回值的函数、无参数有返回值的函数、无参数有返回值的函数 函数的调用函数的调用函数的调用函数的调用 函数名函数名函数名函数名(void)(void);或或或或 变量变量变量变量 =函数名函数名函数名函数名()();实例实例实例实例#include#include#include#include#include#include int sum();int sum();void main()void main()int tot;int tot;tot=sum();tot=sum();printf(nthe result is:%dn,tot);printf(nthe result is:%dn,tot);int sum()int sum()int i;int i;int tot=0;int tot=0;for(i=0;i=100;i+)for(i=0;i=100;i+)tot+=i;tot+=i;return(tot);return(tot);声明声明声明声明sumsum函函函函数的原型数的原型数的原型数的原型 调用调用调用调用sumsum函数函数函数函数函数的定义,无函数的定义,无函数的定义,无函数的定义,无参数有返回值参数有返回值参数有返回值参数有返回值 变量声明部分变量声明部分变量声明部分变量声明部分函数函数函数函数sumsum的功能是:的功能是:的功能是:的功能是:计算计算计算计算1 1100100之间所有整数之之间所有整数之之间所有整数之之间所有整数之和和和和 2 2 2 2、无参数有返回值的函数、无参数有返回值的函数、无参数有返回值的函数、无参数有返回值的函数 函数的返回函数的返回函数的返回函数的返回 表达式的值即是函数的返回值;表达式的值即是函数的返回值;表达式的值即是函数的返回值;表达式的值即是函数的返回值;函数体中一般都包含函数体中一般都包含函数体中一般都包含函数体中一般都包含returnreturn(表达式)(表达式)(表达式)(表达式)语句语句语句语句,如果如果如果如果没有没有没有没有,函数也会返回一个值。这个值是不可预知的函数也会返回一个值。这个值是不可预知的函数也会返回一个值。这个值是不可预知的函数也会返回一个值。这个值是不可预知的,将将将将会使程序可能犯有逻辑错;会使程序可能犯有逻辑错;会使程序可能犯有逻辑错;会使程序可能犯有逻辑错;一般情况下,一般情况下,一般情况下,一般情况下,表达式值的类型应与函数返回值类型表达式值的类型应与函数返回值类型表达式值的类型应与函数返回值类型表达式值的类型应与函数返回值类型一致一致一致一致;当当当当returnreturn(表达式)语句中的表达式的类型与函数(表达式)语句中的表达式的类型与函数(表达式)语句中的表达式的类型与函数(表达式)语句中的表达式的类型与函数的返回值类型不一致时,编译器将对表达式进行强制的返回值类型不一致时,编译器将对表达式进行强制的返回值类型不一致时,编译器将对表达式进行强制的返回值类型不一致时,编译器将对表达式进行强制类型转换类型转换类型转换类型转换,将表达式的值强制转换成函数返回值类型将表达式的值强制转换成函数返回值类型将表达式的值强制转换成函数返回值类型将表达式的值强制转换成函数返回值类型,然后返回给调用者。然后返回给调用者。然后返回给调用者。然后返回给调用者。l l 格式格式格式格式 rerurn(rerurn(表达式表达式表达式表达式););或或或或 rerutn rerutn 表达式表达式表达式表达式;l l 说明说明说明说明#include#include int sum();int sum();void main()void main()int x;int x;x=sum();x=sum();printf(“x=%dn,x);printf(“x=%dn,x);int sum()int sum()int i,tot=0;int i,tot=0;for(i=1;i=100;i+)for(i=1;i 1-1-1-形参形参形参形参1 1 1 1 实参实参实参实参2-2-2-2-形参形参形参形参2 2 2 2 实参实参实参实参n-n-n-n-形参形参形参形参n n n n3 3 3 3、有参数无返回值的函数、有参数无返回值的函数、有参数无返回值的函数、有参数无返回值的函数#include#include void printnstar(int n);void printnstar(int n);void main()void main()int i=8;int i=8;printnstar(i);printnstar(i);void printnstar(int n)void printnstar(int n)for(int i=0;in;i+)for(int i=0;in;i+)printf(*);printf(*);printf(n);printf(n);原型声明原型声明原型声明原型声明*运行结果运行结果运行结果运行结果函数调用函数调用函数调用函数调用函数定义4 4 4 4、有参数有返回值的函数、有参数有返回值的函数、有参数有返回值的函数、有参数有返回值的函数 定义格式定义格式定义格式定义格式 返回值类型符返回值类型符返回值类型符返回值类型符 函数名函数名函数名函数名 (类型符类型符类型符类型符1 1 形参名形参名形参名形参名1,1,类型符类型符类型符类型符n n 形参名形参名形参名形参名n n)变量声明部分变量声明部分变量声明部分变量声明部分 执行部分执行部分执行部分执行部分 函数体函数体函数体函数体 函数用途函数用途函数用途函数用途 此类型的函数主要是此类型的函数主要是此类型的函数主要是此类型的函数主要是根据形参的值来进行某种事务的处根据形参的值来进行某种事务的处根据形参的值来进行某种事务的处根据形参的值来进行某种事务的处理,理,理,理,同时可将处理后的结果值返回给调用函数同时可将处理后的结果值返回给调用函数同时可将处理后的结果值返回给调用函数同时可将处理后的结果值返回给调用函数。它最能体现。它最能体现。它最能体现。它最能体现调用函数与被调函数之间的数据联系。调用函数与被调函数之间的数据联系。调用函数与被调函数之间的数据联系。调用函数与被调函数之间的数据联系。函数的原型声明函数的原型声明函数的原型声明函数的原型声明 返回值类型符返回值类型符返回值类型符返回值类型符 函数名函数名函数名函数名(类型符类型符类型符类型符1 1 形参名形参名形参名形参名1,1,类型符类型符类型符类型符n n 形参名形参名形参名形参名n)n);或或或或 返回值类型符返回值类型符返回值类型符返回值类型符 函数名函数名函数名函数名(类型符类型符类型符类型符1,1,类型符类型符类型符类型符2,2,类型符类型符类型符类型符n)n);形参列表形参列表形参列表形参列表4 4 4 4、有参数有返回值的函数、有参数有返回值的函数、有参数有返回值的函数、有参数有返回值的函数 函数调用函数调用函数调用函数调用 函数名函数名函数名函数名(实参实参实参实参1 1,实参,实参,实参,实参2 2,实参,实参,实参,实参n)n);或或或或变量名变量名变量名变量名 =函数名函数名函数名函数名(实参实参实参实参1 1,实参,实参,实参,实参2 2,实参,实参,实参,实参n)n);#include#include int max(in t a,int b);int max(in t a,int b);/函数的原型声明函数的原型声明函数的原型声明函数的原型声明void main()void main()int a,b,c;int a,b,c;scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);c=max(a,b);c=max(a,b);/函数调用函数调用函数调用函数调用(a(a、b b为实参为实参为实参为实参)printf(the biggest number is:%dn,c);printf(the biggest number is:%dn,c);int max(int a,int b)int max(int a,int b)/函数定义函数定义函数定义函数定义(a(a、b b为形参为形参为形参为形参)return(a b?a:b);return(a b?a:b);运行结果:运行结果:运行结果:运行结果:5 95 9 the biggest number is 9the biggest number is 95 5 5 5、函数调用和函数声明小结、函数调用和函数声明小结、函数调用和函数声明小结、函数调用和函数声明小结 函数调用函数调用函数调用函数调用 l l 用调用语句调用用调用语句调用用调用语句调用用调用语句调用:例:例:例:例:printstar();printstar();printf(“Hello,World!n”);printf(“Hello,World!n”);l l 用表达式调用用表达式调用用表达式调用用表达式调用:例例例例:m=max(a,b)*2;m=max(a,b)*2;l l 作为函数参数调用作为函数参数调用作为函数参数调用作为函数参数调用:例例例例:printf(“%d”,max(a,b);printf(“%d”,max(a,b);m=max(a,max(b,c);m=max(a,max(b,c);函数函数函数函数声明声明声明声明l l 对被调用函数要求:对被调用函数要求:对被调用函数要求:对被调用函数要求:必须是必须是必须是必须是已存在已存在已存在已存在的函数的函数的函数的函数库函数库函数库函数库函数:#include#include 用户自定义函数用户自定义函数用户自定义函数用户自定义函数:函数声明函数声明函数声明函数声明l l 函数函数函数函数声声声声明明明明一般形式:一般形式:一般形式:一般形式:函数类型函数类型函数类型函数类型 函数名函数名函数名函数名(形参类型形参类型形参类型形参类型 形参名形参名形参名形参名,.),.)作用:告诉编译系统作用:告诉编译系统作用:告诉编译系统作用:告诉编译系统函数类型、参数个数及类型,以便检验函数类型、参数个数及类型,以便检验函数类型、参数个数及类型,以便检验函数类型、参数个数及类型,以便检验函数函数函数函数声声声声明位置:明位置:明位置:明位置:主函数之前或者主函数内调用函数之前主函数之前或者主函数内调用函数之前主函数之前或者主函数内调用函数之前主函数之前或者主函数内调用函数之前float add(float x,float y)float add(float x,float y)float z;float z;z=x+y;z=x+y;return(z);return(z);#include#includevoid main()void main()float a,b,c;float a,b,c;scanf(%f,%f,&a,&b);scanf(%f,%f,&a,&b);c=add(a,b);c=add(a,b);printf(sum is%f,c);printf(sum is%f,c);被调函数出现在主调函数之被调函数出现在主调函数之被调函数出现在主调函数之被调函数出现在主调函数之前,不必函数说明前,不必函数说明前,不必函数说明前,不必函数说明例例例例:函数声明举例函数声明举例函数声明举例函数声明举例#include#include void main()void main()float add(float,float);float add(float,float);/函数原型声明函数原型声明函数原型声明函数原型声明 float a,b,c;float a,b,c;scanf(%f,%f,&a,&b);scanf(%f,%f,&a,&b);c=add(a,b);c=add(a,b);printf(sum is%f,c);printf(sum is%f,c);float add(float x,float y)float add(float x,float y)float z;float z;z=x+y;z=x+y;return(z);return(z);#include#include float add(float,float);float add(float,float);/函数原型声明函数原型声明函数原型声明函数原型声明void main()void main()float a,b,c;float a,b,c;scanf(%f,%f,&a,&b);scanf(%f,%f,&a,&b);c=add(a,b);c=add(a,b);printf(sum is%f,c);printf(sum is%f,c);float add(float x,float y)float add(float x,float y)float z;float z;z=x+y;z=x+y;return(z);return(z);6 6.3 .3 函数参数的传递函数参数的传递 1 1 1 1、实际参数(简称实参)、实际参数(简称实参)、实际参数(简称实参)、实际参数(简称实参)根据参数完成的功能,一共有根据参数完成的功能,一共有根据参数完成的功能,一共有根据参数完成的功能,一共有实际参数实际参数实际参数实际参数和和和和形式参数形式参数形式参数形式参数两种。两种。两种。两种。形式形式形式形式:函数名(实参函数名(实参函数名(实参函数名(实参1 1,实参,实参,实参,实参2 2,.,.,实参实参实参实参n n)功能功能功能功能:将调用函数中的变量或常量的数值单向复制给被调用将调用函数中的变量或常量的数值单向复制给被调用将调用函数中的变量或常量的数值单向复制给被调用将调用函数中的变量或常量的数值单向复制给被调用函数中的形参;函数中的形参;函数中的形参;函数中的形参;注意注意注意注意:1.1.1.1.形参与实参占用不同的内存单元形参与实参占用不同的内存单元形参与实参占用不同的内存单元形参与实参占用不同的内存单元 2.2.2.2.单向传递单向传递单向传递单向传递 3.3.3.3.实参的前面不能有类型符实参的前面不能有类型符实参的前面不能有类型符实参的前面不能有类型符2 2 2 2、形式参数(简称、形式参数(简称、形式参数(简称、形式参数(简称形形形形参)参)参)参)形式形式形式形式:类型类型类型类型 形参形参形参形参1 1,类型,类型,类型,类型 形参形参形参形参2 2,.,.,类型类型类型类型 形参形参形参形参n n 功能功能功能功能:接收并保存实参复制过来的数值。接收并保存实参复制过来的数值。接收并保存实参复制过来的数值。接收并保存实参复制过来的数值。7 7x x1111y y 调用调用调用调用例例例例:交换两个数交换两个数交换两个数交换两个数#include#include void swap(int a,int b);void swap(int a,int b);void main()void main()int x=7,y=11;int x=7,y=11;printf(before swapped:);printf(before swapped:);printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);swap(x,y);swap(x,y);printf(after swapped:);printf(after swapped:);printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);void swap(int a,int b)void swap(int a,int b)int temp;int temp;temp=a;temp=a;a=b;a=b;b=temp;b=temp;运行结果:运行结果:运行结果:运行结果:before swapped:x=7,y=11before swapped:x=7,y=11after swapped:after swapped:x=7,y=11x=7,y=117 7x x1111y y 调用前调用前调用前调用前7 7a a1111b b swapswap7 7x x1111y y7 7a a1111b btemptemp7 711117 77 7x x1111y y 调用结束调用结束调用结束调用结束Why?Why?6 6.4 .4 变量的作用域与变量的作用域与存储方式存储方式 1 1 1 1、作用域的基本概念、作用域的基本概念、作用域的基本概念、作用域的基本概念 变量的作用域变量的作用域变量的作用域变量的作用域 即变量的作用即变量的作用即变量的作用即变量的作用范围范围范围范围(或有效范围)。表现为变量有的(或有效范围)。表现为变量有的(或有效范围)。表现为变量有的(或有效范围)。表现为变量有的可以在整个程序中进行引用,有的则只能在局部范围内可以在整个程序中进行引用,有的则只能在局部范围内可以在整个程序中进行引用,有的则只能在局部范围内可以在整个程序中进行引用,有的则只能在局部范围内引用。引用。引用。引用。按其作用域范围可分为两种:即按其作用域范围可分为两种:即按其作用域范围可分为两种:即按其作用域范围可分为两种:即局部变量局部变量局部变量局部变量和和和和全局变量全局变量全局变量全局变量 2 2 2 2、局部变量、局部变量、局部变量、局部变量 定义定义定义定义 在函数内作定义说明的变量在函数内作定义说明的变量在函数内作定义说明的变量在函数内作定义说明的变量。作用域作用域作用域作用域 仅限于仅限于仅限于仅限于所声明的所声明的所声明的所声明的函数内,离开函数后不可再引用。函数内,离开函数后不可再引用。函数内,离开函数后不可再引用。函数内,离开函数后不可再引用。int f1(int f1(int x,int yint x,int y)int z;int z;z=x y?x:y;z=x y?x:y;return(z);return(z);void main()void main()int i;int i;i=z;i=z;printf(%dn,printf(%dn,i i););局部变量局部变量局部变量局部变量 变量变量变量变量x x x x、y y y y、z z z z的作用域的作用域的作用域的作用域引用错误!引用错误!引用错误!引用错误!说明说明说明说明 (1)(1)(1)(1)主函数主函数主函数主函数main()main()main()main()中定义的变量也是局部变量中定义的变量也是局部变量中定义的变量也是局部变量中定义的变量也是局部变量,它只能,它只能,它只能,它只能在主函数中使用,其它函数不能使用。同时,主函数中也不在主函数中使用,其它函数不能使用。同时,主函数中也不在主函数中使用,其它函数不能使用。同时,主函数中也不在主函数中使用,其它函数不能使用。同时,主函数中也不能使用其它函数中定义的局部变量。能使用其它函数中定义的局部变量。能使用其它函数中定义的局部变量。能使用其它函数中定义的局部变量。int f3(int x);int f3(int x);void main()void main()int int a a=2,=2,b b;b=a+y;b=a+y;printf(%dn,b);printf(%dn,b);int f3(int int f3(int x x)int int y y;y=a+5;y=a+5;return(y);return(y);局部变量局部变量局部变量局部变量 变量变量变量变量a a a a、b b b b的作用域的作用域的作用域的作用域变量变量变量变量x x x x、y y y y的作用域的作用域的作用域的作用域局部变量局部变量局部变量局部变量 错误!错误!错误!错误!错误!错误!错误!错误!说明说明说明说明(2)(2)(2)(2)允许在不同的函数中使用相同的变量名允许在不同的函数中使用相同的变量名允许在不同的函数中使用相同的变量名允许在不同的函数中使用相同的变量名,它们代表不同的,它们代表不同的,它们代表不同的,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。对象,分配不同的单元,互不干扰,也不会发生混淆。对象,分配不同的单元,互不干扰,也不会发生混淆。对象,分配不同的单元,互不干扰,也不会发生混淆。#include#include void subf();void subf();void main()void main()int a,b;int a,b;a=3,b=4;a=3,b=4;printf(main:a=%d,b=%dn,a,b);printf(main:a=%d,b=%dn,a,b);subf();subf();printf(main:a=%d,b=%dn,a,b);printf(main:a=%d,b=%dn,a,b);void subf()void subf()int a,b;int a,b;a=6,b=7;a=6,b=7;printf(subf:a=%d,printf(subf:a=%d,b=%dn,a,b);b=%dn,a,b);运行结果:运行结果:运行结果:运行结果:main:a=3,b=4main:a=3,b=4subf:a=6,b=7subf:a=6,b=7main:a=3,b=4main:a=3,b=4变量名相同变量名相同变量名相同变量名相同 说明说明说明说明 (3)(3)(3)(3)在复合语句中定义的变量也是局部变量在复合语句中定义的变量也是局部变量在复合语句中定义的变量也是局部变量在复合语句中定义的变量也是局部变量,其作用域只,其作用域只,其作用域只,其作用域只在复合语句范围内。在复合语句范围内。在复合语句范围内。在复合语句范围内。#include#include void main()void main()int a=2,b=4;int a=2,b=4;int k,b;int k,b;k=a+5;k=a+5;b=a*5;b=a*5;printf(k=%dn,k);printf(k=%dn,k);printf(b=%dn,b);printf(b=%dn,b);printf(b=%dn,b);printf(b=%dn,b);a=k+2;a=k+2;mainmain中的局部变量中的局部变量中的局部变量中的局部变量 复合语句中的局部变量复合语句中的局部变量复合语句中的局部变量复合语句中的局部变量 mianmian中中中中变量变量变量变量a a、b b的作用域的作用域的作用域的作用域 复合语句中复合语句中复合语句中复合语句中变量变量变量变量k k、b b的作用域的作用域的作用域的作用域输出输出输出输出k=7k=7 输出输出输出输出b=10b=10 输出输出输出输出b=4b=4 错误!错误!错误!错误!3 3 3 3、全局变量、全局变量、全局变量、全局变量 定义定义定义定义 在函数外部作定义说明的变量在函数外部作定义说明的变量在函数外部作定

    注意事项

    本文(C语言程序设计第六章.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开