2011投影5 省二级C等级考试基础考点4(函数)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数
一、非递归函数的定义、声明、调用及执行过程
1.函数的分类(***)
C语言中函数从用户的角度分为标准函数和用户自定义函数。
1) 标准函数(库函数)
用include将包含该函数的头文件包含进来
2)用户自定义函数
用户自定义函数由用户按需要编写的函数,分为函数定义和函数调用两部分。
2.函数的定义(*****)
函数有两个部分组成:函数首部和函数体。
函数首部只有一行,包含函数类型、函数名和形参类型说明表
注意:函数首部没有分号“;”
函数体为包含在一对花括号中的说明部分和语句部分。
1)函数定义格式
函数类型函数名(形参类型说明表)
{ 说明部分
语句部分
}
函数名为C语言的合法标识符,尽量与库函数名不同。
2)函数类型
函数类型为函数返回值类型
函数返回值类型可以为基本数据类型、结构体类型、指针类型。
①函数返回值类型,如果为“int”,则可以缺省,若缺省则表示为
“int”型。
②不返回函数值的函数,函数类型定义为“空类型”,在函数类型处
必须写“void”。
3)函数形式参数的声明
函数参数定义形式:
(类型形参1,类型形参2, ……)
①形参个数和类型的设计应根据具体应用需要。
②每个形式参数名前都要有类型说明,参数与参数之间用逗号“,”
隔开。
③如果是无参函数,则没有参数,但是括号“( )”必须有。也可以在
括号里写void,如:
int f(); 或者int f(void);
无参函数不存在参数的传送,通常用来完成指定的功能。
(1)函数体定义
函数体由一对花括号括起来,由说明部分和语句部分组成
说明部分包含变量定义和函数声明
语句部分是函数执行的语句。
(2) 函数返回值与return语句的使用
函数的返回值
指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。
如果需要把被调函数的值带回主调函数,就需要使用return语句。
函数是否需要返回值,由具体应用决定。返回值由return语句实现。
return语句的一般形式如下:
return 表达式; 或者return (表达式) ; 或者return ;
①当执行return语句时,即使调用的函数主体中还有其他语句,
函数执行也会停止。
②return语句只能出现在函数体内,出现在代码中的其他任何地方
都会造成语法错误。
③对于返回类型为void的程序,return;语句是可选的
④对于返回类型非void的程序,必须至少包括一条明确的return
语句。
⑤程序体可以包含不只一条,但只会执行其中的一个return语句,
只能返回一个值,如果需要带回多个值,借助于指针或者外部变
量实现。
⑥函数返回值的类型应该与函数定义时的类型保持一致,若不一
致,自动转换为函数定义时的类型。
3.函数的声明(函数原型) (****)
函数要先定义后才能使用。
若定义写在调用位置之后,必须在调用位置之前用函数原型声明。
声明方式:
函数类型函数名(形参类型说明表);
有以下三种情况可以不作函数声明,其他情况都必须进行函数声明:
(1)定义写在调用位置之前。
(2)函数返回值为int型。
(3)在所有函数之前已经声明过。
4.函数的调用(*****)
所有的函数定义,包括主函数在内,都是平行的,也就是说,在一个函数体内,不能再定义另一个函数。
但是,函数之间可以相互调用,也可以嵌套调用,就是函数A调用了函数B,函数B又调用了函数C,还可以自己调用自己,即递归调用。
main函数可以调用其他函数,但是不能被其他函数调用。
若在函数A中调用函数B,则称A为主调函数,B为被调函数。
1)函数调用形式
(1)对于没有返回值的函数,即函数类型为“void”的函数,调用形式为:
函数名(实参1,实参2,……);
(2)对于有返回值的函数,调用形式为:
变量名=函数名(实参1,实参2,……);
实参与形参个数相等,类型一致,按顺序一一对应,参数与参数之间用逗号隔开。
2)函数执行过程
C程序必须有且只能有一个名为main的主函数,C程序的执行总是从main函数开始。
当执行到main函数中的函数调用语句时,程序会跳转到被调用函数定义体内,同时将主调函数中的值通过参数传递给被调函数,当执行到被调函数的return语句时或者最后一个语句后返回到主调函数。
3)函数调用方式
(1)函数语句
在函数调用后加一分号构成函数语句。例如:
printstar();
printf("Hello,World!\n");
(2)函数表达式
将函数调用的返回值作为操作数使用,构成表达式。例如:
m=max(a,b)*2;
(3)函数实参
将函数调用的返回值作为另一个函数的实际参数。例如:
printf("%d",max(a,b));
m=max(a,max(b,c));
4)函数调用和函数声明的区别
(1)函数调用是函数的执行部分;函数声明是函数的说明部分。
(2)函数调用中使用的参数是实际参数,函数声明中的参数是形式参
数,有时括号中只写参数类型即可。
(3)函数声明是为函数调用服务的,如果没有调用,就不需要声明。
二、函数调用时参数的传递
1.形参与实参(*****)
1)形式参数
形式参数是定义函数时使用的变量名,等待接收从主调函数传来的实际参数值,简称形参。
形参变量只有在被调用时才分配内存,调用结束,释放内存,只在函数内部有效。
2)实际参数
实际参数是调用函数时用到的变量名,调用函数时函数名后圆括号中