函数的定义和调用
7.2函数定义
函数定义的一般形式:
类型标识符 函数名(形式参数表列) 函数定义函数首部不要以分号结尾
{
说明部分
执行部分
}
例:
int max(int a,int b) /*函数首部*/ 类型标识符函数名形式参数表列
{ /*函数体开始*/
int z; /*说明部分*/
if(a>b)z=a; /*执行部分*/
else z=b;
return(z);
int函数啥意思}
说明:函数定义包括函数首部和函数体两部分。
类型标识将是指函数返回值的类型,简称函数值类型。函数的返回值由函数中的return语句获得,即return后的表达式的值,可以是简单类型、void类型或构造类型等,注意一般函数返回什么类型的数据,函数的类型就定义成相应的类型。void类型为空类型,表示函数没有返回值。如希望不返回值,可以定义函数类型为void类型,当函数值类型为int时,可省略函数类型的说明。关于return:函数的值只能通过return语句返回主调函数,返回函数值的类型和函数定义中函数的类型应保持一致,如果函数值为int型可以省略函数类型说明,不返回函数值的函数,明确定义成空类型。
函数名是函数的标识符。函数名取名遵循c语言标识符的命名规则,区分大小写。函数名后的形式参数表列给出函数的形式参数及其类型说明。
形式参数简称形参,形式参数及其类型说明放在函数名后的一对圆括号中.无论函数是否有形式参数,函数名后的圆括号不可省;圆括号内没有形式参数的函数我们称之为无参函数,有形式参数的函数我们称为有参函数。强调:没有形式参数圆括号也不能省。形式参数可以是各种类型的变量,形式为:形参1类型 形参1,形参2类型 形参2 各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。
函数体:函数说明之后的花括号“{}”括起来的部分,包括声明部分和执行部分:
1)声明部分:用来对函数中使用的变量和函数作说明。
2)执行部分由基本语句组成.函数的功能由函数体内的各个语句的执行来实现。
解释函数
函数的调用
一个函数被定义后,程序中的其他函数就可以使用这个函数,这个过程称为函数调用。
1。函数调用的一般形式
函数名(实参表列);实际参数表中的参数可以是常数、变量或构造类型数据,各实参之间也是用逗号分隔。对无参函数调用时无实际参数表。
函数有以下三种调用方式:
(1) 函数表达式:函数调用出现在一个表达式中、这种表达式称为函数表达式。例如w=max(x,y);此时要求函数返回一个确定的值.参加表达式的计算。这里把max的返回值赋给变量w。
(2) 函数语句:把函数调用作为一个语句,例如:printf(“%d”,a) ,这是以函数语句的方式调用函数。
(3)函数参数。函数调用作为一个函数的实参,把函数的返回值作为实参传递,一次要求函数必须是有返回值的。例如:m=max(a,max(b,c); 其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。
2.函数调用语句的执行过程
计算每个实参表达式的值,并把此值存人被调用函数所对应的形参单元中;把执行流程转入被调用函数体.执行函数体中的语句;当执行到彼调用函数体的右花括号或return语句时,被调用函数体执行完成,返回到主调函数中此次调用函数语句的下一条语句,继续往下执行。
版书书上P72例子讲解
#include<stdio.h>
int max(int a,int b) 函数定义,详细的说明函数的功能,不管main函数在什么位置,
{ 程序的执行总是从main函数开始的。main函数中z=max(x,y)
if(a>b) return a; 语句表示主函数调用了max函数,是哪一种调用方式呢?函数
else return b; 表达式的方式,函数调用时,实参x的值传递给相应的形参a
} 实参y传递给相应的形参b,若scanf输入3,5,x、y的值分别
main() 是?a、b的值分别是?开始调用max函数,main函数暂时停止
{ 运行,解释max函数。max函数执行的结果将两数中的大者返
int x,y,z; 回。这里主函数中设置返回值赋给z。调用结束后返回到主调
printf(“input two numbers:\n”); 函数中此次调用函数语句的下一条语句,继续往下执行。
scanf(“%d%d”,&x,&y); 也就是开始执行printf语句。
z=max(x,y);
printf(“maxmum=%d”,z)
}
上面讲的是函数定义放在main函数之前的情况。那么如果函数定义放在main函数之后,必须在函数调用以前对函数进行声明。书上的例子:
int max(int a,int b); 由于max函数放在main之后,
main() 在调用之前要进行声明,意思是告诉计算机编译系统,程序将
{ 出现一个max函数,不能太突然了,吓人家一大跳
int x,y,z; 函数声明与函数定义中的函数首部相同,但是末尾要加分号。
printf(“input two numbers:\n”); 函数声明时里面的参数可以省略不写,写成
scanf(“%d%d”,&x,&y); int max(int,int),也可以和定义的参数不同,但是
z=max(x,y); 类型标识符不能省略,而且两个参数则对应两
printf(“maxmum=%d”,z) 个类型说明符,这里不能只写一个int
}
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
函数的形式参数和实际参数见教材P73
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论