- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言chap6[函数与宏定义]
6.1 函数概念;6.2 函数定义的一般形式;3.“ 空函数 ”;6.3 函数参数和函数的值;? 形参变量在被调用前不占用存储单元;在被调用结束后,形参所占存储单元亦被释放。
? 实参可以是常量、变量或表达式。
? 必须指定形参类型,且必须与实参的类型一致。
? 实参对形参的数据传递是“值传递”。即单向传递,不能逆传。
? 可以在形参表中直接说明形参类型。如:
int max(int x, int y);
float fun(int a[10], int n);;? 函数的返回值是通过return语句获得的。当不需返回函数值时,可省去return语句。
? return语句的后面可以有括号,也可以没有。如:
return z ; ? return(z);
? return语句的后面可以是变量,也可以是表达式。如:
return(x y ? x : y);
? return语句返回值的类型应与该函数的类型一致。否则以函数类型为准。;? 若函数中没有return语句,则该函数被调用后也会带回不确定的值。如:main( );1.函数调用的一般形式
函数名(实参表);
说明:
? 对于无参函数,尽管没有“实参表”,但也不得省略括号。
? “实参表”中的参数之间用逗号分开。
? 实参与形参之间的个数及类型必须一一对应。
? 对实参求值的顺序是自左至右还是自右至左, 视具体的系统而定。Turbo C 和 MS C 是按自右至左的顺序求值。;例6.2
main( )
{ int i =2 , p ;
p = fun( i , + + i );
printf ( “%d”, p ) ;
}
int fun ( a , b )
int a , b ;
{ int c ;
if ( a b ) c = 1;
else if ( a = = b ) c = 0 ;
else c = –1 ;
return( c ) ;
}; 调用函数,可以有如下三种方式:
? 将函数调用作为一个语句。如:
printf(“MS C pragramming”); gets(s);
? 将被调用的函数写在表达式中。如:
c=2?max(a, b);
注意:被调用函数max必须有确定的返回值。
? 将函数调用作为一个函数的实参。如:
m=max(max(a, b), c);
3.对被调用函数的说明
在一个函数中调用另一个函数时:
? 如果被调函数为库函数,则应在文件开头用“#include”命令声明相应的“头文件”。如:
#include “stdio.h”
#include “math.h”
; 类型标识符 被调函数名( );
如:float add( );
? 如果被调函数为自定义函数且其定义在主调函数定义之前,则在主调函数中可不必声明其类型。因为编译程序已知道其类型。
? 如果被调函数的值是整型或字符型,可不必声明类型,系统自动按整型说明。
? 如果在所有被调函数定义之前、在文件的开头、在函数的外部已对被调函数作了类型说明,则在各主调函数中可不必说明其类型。如:
char letter( );
float f( );
int i( );?
main( )
{……} /? 不必说明它所调用的函数的类型 ?/
;例6.3 编程求11~999之间的数m,而m、m2和m3均是回文数(数位左右对称)。 如:m=11、m2=121、m3=1331,…… 。; C 语言函数的定义都是相互平行、独立的,不能嵌套定义。但可以嵌套调用函数。所谓函数的嵌套调用就是在被调用的函数中又调用另外的函数。
6.6 函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。;例6.4 有5人排成一队,从最后一人开始,其年龄均比前面的人大2岁,而最前面的人年龄是10岁,问最后一人的年龄是多少岁?;函数的递归调用利用了堆栈技术。在本例中:;写出下面程序的运行结果:
例6.4 e
#include stdio.h
fun(int x)
{int p;
if(x==0||x==1) return 3;
p=x-fun(x-2);
return p;
}
void main()
{
printf(%d\n,fun(9));
};汉诺塔问题参考程序(将A座上的N个disks 借助B座移动到C座);1.局部变量
在一个函数内部定义的变量,只能在本函数内使用和有效,称为“局部变量”
您可能关注的文档
- 9DD15B05-1D9A-42D2-AD47-A6BA8BE30DAC.PS语言基本结构.ppt
- 9“我的信念”教学课件.ppt
- 9数模与模数转换.ppt
- 9穷人人教版优秀课件[修改]PPT.ppt
- 9第九章社会控制.ppt
- 9影视欣赏阿甘正传.ppt
- A12课程论文的研究与写作[11市营].ppt.ppt
- A02Oracle数据库入门.ppt
- 9课“中华文化的勃兴[二]”课件.ppt
- 9第9章仓储、物流搬运和包装[xiugai].ppt
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
文档评论(0)