- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第04章-函数与C程序结构
程序设计技术;函数与程序结构;函数与程序结构;4.1 函数的定义和调用 ;4.1.1 函数的定义和声明;/*现代风格*/
long fac(int n) //函数头
{ long y=1;
int i;
for(i=1;i=n ;i++)
y=y*i;
return(y);
};函数的定义内容如下:
函数返回值类型
可是任何有效类型,void表示函数无返回值。
函数名
用户自定义标识符,不能重名。
形式参数(简称形参)的数目、类型
为函数接受外来数据提供变量名、类型和数目。
return 表达式语句
函数执行结果(按函数定义的返回类型)返回给主调函数。如果函数定义时返回类型为void,可缺省return语句。; 注意:
C语言中的每一个函数都是一个独立的代码块。一个函数的代码块是隐藏于函数内部的,不能被任何其它函数中的任何语句(除调用它的语句之外)所访问。它既不能影响程序其它部分,也不受其它部分的影响。
在一个函数的内部不能定义其他函数(即函数不能嵌套定义)。这个规定保证了每个函数都是一个相对独立的程序模块。
由多个函数组成的C程序中,各个函数的定义顺序是任意的,它不影响C程序运行时函数的执行顺序 ;2)函数的声明
在主调函数中,要对本函数将要调用的函数事先进行必要的声明。所谓“声明”是指向编译系统提供必要的信息:函数名,函数的返回值类型,函数参数的个数、类型及排列次序,以便编译系统对函数的调用进行检查。例如,检查形参与实参类型是否一致,函数返回值的类型是否正确。
C语言的函数分为标准库函数和用户自定义函数两大类。下面分别介绍他们的声明方法。 ;标准库函数的声明
使用标准库函数时,由于系统提供的标准库函数的说明都分门别类集中在一些称为“头文件”的文本文件中,所以在程序中如果要调用系统标准库函数,也要在程序的适当位置使用编译预处理语句来进行声明。
例如:
#include stdio.h
或 #inlcude “stdio.h”
作用:将调用有关库函数的必要信息包含到本源文件中来。;用户自定义函数的声明
对于用户自定义函数,如果被调用函数(简称被调函数)与调用它的函数(简称主调函数)在同一源文件中,在函数调用之前,需要对被调函数进行声明。
被调函数声明的一般形式:
返回类型符 函数名(形式参数表及其说明);
;#include stdio.h
void main()
{ long factorial(int n);
int num;
printf(Input the num: );
scanf(%d,num);
printf(%d!= %ld\n,num,factorial(num));
}
long factorial(int n) //函数factorial的定义
{ int i;
long fact=1;
for(i=1;i=n;i++)
fact*=i;
return fact;
};在函数声明中,形参变量名字无关紧要
(可与函数定义不同或缺省)
factorial的声明语句可写成如下两种形式:
long factorial(int); /* 缺省形参名 */
long factorial(int x); /* 形参名与定义不同 */
注意:
在下列情况下可以不对被调函数进行声明:
① 被调函数的定义出现在主调函数之前,不必进行说明,其原因是编译系统此时已经知道了被调函数的返回类型。;函数调用
一个函数调用另外一个函数以完成某一特定的功能称之为函数调用。
调用者称为主调函数
被调者称为被调函数
函数调用的一般形式:
函数名(实参表);
调用时填入的参数,称为实际参数,简称实参。实参的个数、类型和顺序,应该与被调函数的形参个数、类型和顺序一致。;三种调用函数的方式
①函数语句(p119):将函数调用作为一个单独的C语句,此种方式主要对应于返回值为空类型(void)的函数调用。
②函数表达式:函数作为一项,出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。如:c=add(a,b);
③函数实参:函数调用作为另外一个函数调用的实际参数出现。此时要求函数被调用后必须要返回一个确定值以作为其外层函数调用的实际参数。
如:if (prime(reverse(n))); ;函数调用时实参的种类
实参是值参数
变量
常数
表达式
实参是地址值参数
指针变量
变量的地址(a)
数组名或某数组元素地址
函数名; 例 4.3 传值方式
#include stdio.h
vo
文档评论(0)