6--函数与编译预处理.ppt

  1. 1、本文档共107页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数库中的函数,以减少重复编写程序段的工作量。 6.1.2 函数分类: 1.从函数形式: 无参函数 有参函数 2.从用户角度: 用户自定义函数 标准函数(库函数):由系统提供3.从函数的返回值角度: 有返回值函数,调用该函数后可以得到返回值。 无返回值函数,调用该函数后没有返回值。 §6.2 函数的定义 一、 无参函数的定义类型说明符 函数名(){ 声明部分;语句部分;} 无参函数例子:二、有参函数定义类型说明符 函数名(形式参数列表){声明部分;语句部分;} 有参函数例子: 三 、 函数的参数形参: 即形式参数:定义函数时函数名后面括号中的变量名 实参: 即实际参数:调用函数时函数名后面括号中的表达式注意:形参与实参类型应一致,个数相同。若形参与实参类型不一致,自动按形参类型转换。 对函数的形参和实参的几点说明: 1.形参变量在未出现函数调用时,它们并不占内存中的存储单元。只有发生函数调用时,形参才被分配内存单元。调用结束后,形参所占的内存单元被释放。因此,形参只在函数内部有效,函数调用结束后不能使用该形参变量。 2.实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,必须有确定的值,以便将其值传给对应的形参。 3.形参只能是变量。 4.形参和实参在数量、类型、顺序应一致。 5.实参变量对形参变量的数据传递是“值传递”,是单向传值。 四 、 函数的返回值和函数的类型 函数的返回值是通过函数中的return语句获得的。 返回形式: return(表达式);或return 表达式;或return; 功能:使程序控制从被调用函数返回到调用(主调)函数中, 同时把返值带给调用函数。释放在函数的执行过程中分配的所有内存空间。 例:求两个整数的大者: 其执行过程: 值传递方式 :函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。 特点:形参与实参占用不同的内存单元,单向值传递。 注意:若函数类型与return语句中表达式值的类型不一致,按函数类型为准,自动转换。例如: 值传递方式举例: swap(int x,int y) { int temp;temp=x; x=y; y=temp; } #include stdio.h main() { int a=7,b=11;printf(“a=%d, b=%d\n,a,b);printf(swapped:\n);swap(a,b);printf(“a=%d,b=%d\n,a,b); } §6.3函数的调用 调用形式 无参形式: 函数名( ) 有参形式: 函数名(实参表) 函数的调用方式: 对被调用函数要求: 必须是已存在的函数 库函数: #include *.h 用户自定义函数: 函数类型说明 §6.4 函数的嵌套与递归调用 嵌套调用: C规定:函数定义不可嵌套,但可以嵌套调用函数 #include stdio.h int dif(int x,int y,int z); int max(int x,int y,int z); int min(int x,int y,int z); void main() { int a,b,c,d;scanf(%d%d%d,a,b,c);d=dif(a,b,c);printf(Max-Min=%d\n,d); } 递归调用:定义:函数直接或间接的调用自身叫函数的递归调用 §6.5 数组作为函数参数 数组元素作函数实参--值传递;此时形参为普通变量 数组名作函数参数--地址传递;此时实参为数组名,形参为数组名或指针变量 6.5.1 数组元素作函数实参 举例6.10: swap1(int x,int y) { int t; t=x;x=y;y=t; } main() { int a[2]={2,4}; printf(“\na[0]=%d,a[1]=%d\n”,a[0],a[1]); swap1(a[0],a[1]); printf(“a[0]=%d, a[1]=%d\n”,a[0],a[1]); } 数组名作为函数参数举例6.11: 6.5.3 用二维数组名作函数参数 二维数组元素可以作为实参,这点与一维数组元素以及简单变量作实参相同。 可以用二维数组名作为实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。如int a[3][10];或int a[ ][10];二者都合法而且等价。但是不能把第二维大小说明省略。如下面是不合法的: int a[ ][

文档评论(0)

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

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

1亿VIP精品文档

相关文档