教学课件 C语言程序设计--徐永青.ppt

  1. 1、本文档共504页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.4 相关理论知识 2. 有返回值函数的调用 (1) 函数的声明 和无返回值在调用一样,一般还应对被调用函数进行声明,如果被调用函数在主调函数前已经定义过了,就可以不用声明了。 函数声明的形式为: 类型名 函数名(形式参数列表); 5.4 相关理论知识 (2) 函数的调用 在C语言中,有返回值函数因为要返回结果,所以在调用的时候是当作相应类型的值在主调函数中使用,调用的一般形式为: ① 函数表达式 函数出现在一个表达式中,则这个表达式称为函数表达式,最简单的表示式就是: 变量=函数名(实参列表);如例5-2中两次调用函数fac 的语句分别为c1=fac(x)和 c2=fac(y)。 ② 函数参数 函数的返回值作为函数再次调用的参数,实际上是函数表达式形式调用的一种。 5.4 相关理论知识 5.4.4 函数的参数传递 从主调函数和被调函数之间数据传送的角度来看,函数又可分为无参函数和有参函数两种。 5.4 相关理论知识 1. 无参函数 函数定义、函数说明及函数调用中均不带参数。主调函数和被调函数之间不进行参数传送。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。 例如:以下Hello()函数就是一个无参函数,当被其它函数调用时,输出Hello world字符串。 void Hello() { printf ("Hello,world !\n"); } 5.4 相关理论知识 2. 有参函数 有参函数在函数定义、函数声明中带有参数,为形式参数。在函数调用时也带有参数,为实际参数。进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。 说明: (1) 定义和声明函数时的参数称为形式参数,调用函数时的参数称为实际参数。函数的形参和实参个数相等,并且相对应的形参和实参类型必须相同。 (2) 实参可以是常量、变量或表达式,是有确定值的参数。 (3) 函数调用时,形参被分配内存单元,并接受对应实参传递过来的数值。调用结束后立即释放内存单元。 5.4 相关理论知识 5.4.5 函数变量作用范围 C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。 1. 局部变量 在函数中定义或说明的变量称为局部变量,也称为内部变量。其作用域仅限于函数内, 从定义点或说明点开始到函数的结束为止,离开该函数后再使用这种变量是非法的。 5.4 相关理论知识 例如: int f1(int x) /*定义局部变量x */ { int y; /* 定义局部变量y */ … } main() { int x,y; /*定义局部变量x,y */ … if(x>y) { int m,n; /* 定义局部变量m,n */ … } … } 5.4 相关理论知识 在函数f1()内定义了两个局部变量,x为形参,y为一般变量。在 f1()的范围内x,y有效,或者说x,y变量的作用域限于f1()内。 main()函数内定义的局部变量x,y,在main()函数范围内有效。注意,main()函数的内部变量x,y和函数f1()的内部变量x,y虽然同名,却是完全不相关的变量。 它们的作用域不同,不产生冲突。f1()中定义的x,y作用域限于f1()内。main() 函数中定义的x,y的作用域限于main函数内。main()函数的if条件复合语句中还定义了两个局部变量m,n,它们的作用范围仅限于该复合语句内部。 5.3 相关实践知识 程序代码: #include <stdio.h> #include <stdlib.h> #include <math.h> int fac(int n) { int i,f=1; n=abs(n); for(i=1;i<=n;i++) /*计算一个整数绝对值的阶乘*/ f=f*i; return(f); } void main() { int x,y,c1,c2; printf("please input x,y:\n"); scanf("%d,%d",&x,&y); c1=fac(x); /*调用函数fac,求x绝对值的阶乘*/ c2=fac(y); /*调用函数fac,求y绝对值的阶乘*/ printf("The outcome is %d\n",c1-c2); /*输出结果*/ } 5.3

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档