




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在一个函数内部说明的变量是内部变量 它只在该函数范围内有效 也就是说 只有在包含变量说明的函数内部 才能使用被说明的变量 在此函数之外就不能使用这些变量了 所以内部变量也称 局部变量 例如 staticintf1 inta 函数f1 intb c a b c作用域 仅限于函数f1 中 staticintf2 intx 函数f2 inty z x y z作用域 仅限于函数f2 中 staticvoidMain string args intm n m n作用域 仅限于函数Main 中 关于局部变量的作用域还要说明以下几点 1 主函数Main 中定义的内部变量 也只能在主函数中使用 其它函数不能使用 同时 主函数中也不能使用其它函数中定义的内部变量 因为主函数也是一个函数 与其它函数是平行关系 这一点是与其它语言不同的 应予以注意 2 形参变量也是内部变量 属于被调用函数 实参变量 则是调用函数的内部变量 3 允许在不同的函数中使用相同的变量名 它们代表不同的对象 分配不同的单元 互不干扰 也不会发生混淆 4 在复合语句中也可定义变量 其作用域只在复合语句范围内 Return 函数 较大的结构化程序 往往是由多个函数组成的 每个函数分别对应各自的功能模块 不同于面向结构程序设计语言 C 是通过静态函数来实现模块化程序设计的 1 函数的定义与调用2 数组作为函数参数3 内部变量与外部变量4 内部函数与外部函数5 变量的动态存储与静态存储 Return 1 函数的定义与调用 1 1函数的定义1 2函数的返回值与函数类型1 3函数的调用1 4函数的形参与实参 Return 1 1函数的定义 1 任何函数 包括主函数Main 都是由函数说明和函数体两部分组成 根据函数是否需要参数 可将函数分为无参函数和有参函数两种 1 无参函数的一般形式函数类型函数名 函数参数 说明语句部分 可执行语句部分 2 有参函数的一般形式函数类型函数名 数据类型参数 数据类型参数2 说明语句部分 可执行语句部分 有参函数比无参函数多了一个参数表 调用有参函数时 调用函数将赋予这些参数实际的值 为了与调用函数提供的实际参数区别开 将函数定义中的参数表称为形式参数表 简称形参表 案例7 1 定义一个函数 用于求两个数中的大数 功能 定义一个求较大数的函数并在主函数中调用 staticintmax intn1 intn2 定义一个函数max return n1 n2 n1 n2 staticvoidMain string args intnum1 num2 num1 4 num2 5 Console WriteLine max num1 num2 Console ReadLine 程序演示 1 2函数的返回值与函数类型 函数可分为有返回值函数和无返回值函数两种 1 函数返回值与return语句有参函数的返回值 是通过函数中的return语句来获得的 1 return语句的一般格式 return 返回值表达式 2 return语句的功能 返回调用函数 并将 返回值表达式 的值带给调用函数 注意 调用函数中无return语句 并不是不返回一个值 而是一个不确定的值 为了明确表示不返回值 可以用 void 定义成 无 空 类型 2 函数类型在定义函数时 对函数类型的说明 应与return语句中 返回值表达式的类型一致 如果不一致 则以函数类型为准 如果缺省函数类型 则系统一律按整型处理 良好的程序设计习惯 为了使程序具有良好的可读性并减少出错 凡不要求返回值的函数都应定义为空类型 即使函数类型为整型 也不使用系统的缺省处理 Return 1 3函数的调用 在程序中 是通过对函数的调用来执行函数体的 其过程与其它语言的子程序调用相似 函数调用的一般形式为 函数名 实际参数表 切记 实参的个数 类型和顺序 应该与被调用函数所要求的参数个数 类型和顺序一致 才能正确地进行数据传递 可以用以下几种方式调用函数 1 函数表达式 函数作为表达式的一项 出现在表达式中 以函数返回值参与表达式的运算 这种方式要求函数是有返回值的 2 函数语句 函数可以只进行某些操作而不返回函数值 这时的函数调用可作为一条独立的语句 3 函数实参 函数作为另一个函数调用的实际参数出现 这种情况是把该函数的返回值作为实参进行传送 因此要求该函数必须是有返回值的 说明 1 调用函数时 函数名称必须与具有该功能的自定义函数名称完全一致 2 实参在类型上按顺序与形参 必须一一对应和匹配 如果类型不匹配 编译程序将按赋值兼容的规则进行转换 如果实参和形参的类型不赋值兼容 通常并不给出出错信息 且程序仍然继续执行 只是得不到正确的结果 3 如果实参表中包括多个参数 对实参的求值顺序随系统而异 有的系统按自左向右顺序求实参的值 有的系统则相反 Return 1 4函数的形参与实参 函数的参数分为形参和实参两种 作用是实现数据传送 形参出现在函数定义中 只能在该函数体内使用 发生函数调用时 调用函数把实参的值复制1份 传送给被调用函数的形参 从而实现调用函数向被调用函数的数据传送 案例 实参对形参的数据传递 实参对形参的数据传递 staticvoids intn inti Console WriteLine n for i n 1 i 1 i n n i 改变形参的值 Console WriteLine n 输出改变后形参的值 staticvoidMain string args intn 100 定义实参n 并初始化 s n 调用函数 Console WriteLine n Console ReadLine 程序演示 说明 1 实参可以是常量 变量 表达式 函数等 无论实参是何种类型的量 在进行函数调用时 它们都必须具有确定的值 以便把这些值传送给形参 因此 应预先用赋值 输入等办法 使实参获得确定的值 2 形参变量只有在被调用时 才分配内存单元 调用结束时 即刻释放所分配的内存单元 因此 形参只有在该函数内有效 调用结束 返回调用函数后 则不能再使用该形参变量 3 实参对形参的数据传送是单向的 即只能把实参的值传送给形参 而不能把形参的值反向地传送给实参 4 实参和形参占用不同的内存单元 即使同名也互不影响 Return 2数组作为函数参数 数组用作函数参数有两种形式 一种是把数组元素作为实参使用 另一种是把数组名作为函数的形参和实参使用 2 1数组元素作为函数参数2 2数组名作为函数的形参和实参 Return 2 1数组元素作为函数参数 数组元素就是下标变量 它与普通变量并无区别 数组元素只能用作函数实参 其用法与普通变量完全相同 在发生函数调用时 把数组元素的值传送给形参 实现单向值传送 案例 写一函数 统计字符串中字母的个数 staticboolisalp charc if c a 程序演示 说明 1 用数组元素作实参时 只要数组类型和函数的形参类型一致即可 并不要求函数的形参也是下标变量 换句话说 对数组元素的处理是按普通变量对待的 2 在普通变量或下标变量作函数参数时 形参变量和实参变量是由编译系统分配的两个不同的内存单元 在函数调用时发生的值传送 是把实参变量的值赋予形参变量 Return 2 2数组名作为函数的形参和实参 与数组元素作为函数的形参和实参不同 用数组元素作实参时 对数组的处理是传送引用 地址 即在数组作函数参数时 形参变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论