目录
一、函数的定义
二、函数的参数
1、实际参数(实参)
2、形式参数(形参)
三、函数的调用
四、函数的返回
五、函数的声明
一、函数的定义
函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或多个值。
函数由函数头和函数体组成,函数头包括返回类型、函数名和参数表,函数体通常用大括号括起来,大括号又称为块。比如,下面的函数中,void是返回类型,sum是函数名,括号里面的是参数表,括号不可省略。
void sum(int begin,int end) //函数头
{
int i;
int sum=0;
for(i=begin;i<=end;i++)
{
sum=sum+i;
}
printf("%d到%d的和为%d\n",begin,end,sum);
} //函数体
二、函数的参数
当一个函数调用时可以向该函数的参数传递一个值,这个值叫做实际参数,简称实参函数的参数叫做形式参数,简称形参。
1、实际参数(实参)
真实传给函数的参数叫做实参。实参可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时都必须有确定的值,以便把这些值传递给形参。
2、形式参数(形参)
函数名后括号中的变量叫做形式参数,形式参数只在函数内有效。
#include<>
void swap(int a,int b);
int main()
{
int a=5,b=6;
swap(a,b); //a,b均为实参
printf("a=%d b=%d",a,b);
return 0;
}
void swap(int a,int b) //int a,int b均为形参
{
int t=a;
a=b;
b=t;
printf("t=%d a=%d b=%d ",t,a,b);
}/*运行结果为:t=5 a=6 b=5 a=5 b=6*/
三、函数的调用
形式为:函数名(参数值); ()表示函数的调用,即使没有参数也不可省略,如果有参数则需要给出正确的数量和顺序。C语言在调用参数时,只能传值给函数,而不是把变量传进去。每个变量都有自己的空间变量,参量也位于这个独立的空间中,和其它函数没有关系。
#include<>
void sum(int begin,int end)
{
int i;
int sum=0;
for(i=begin;i<=end;i++)
sum=sum+i;
printf("%d到%d的和为%d\n",begin,end,sum);
}
int main()
{
sum(10,20); //调用了sum函数
return 0;
}
四、函数的返回
函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过return语句返回。return停止函数的执行,并送回一个值,有return;和return 表达式;两种形式。void 函数名(参数表) 不能使用带值的return,也可以没有return,调用的时候不能做返回值的赋值。如果函数有返回值,则必须使用带值的return。
int max(int a,int b)
{
int ret;
if(a>b)
ret=a;
else
ret=b;
return ret; //函数返回ret的值
}
五、函数的声明
C语言的编译器自上而下分析代码,所以只有定义过的函数才能调用前面定义过的函数,如果函数定义在后面,则需要在函数调用前进行函数声明。函数通过函数原型进行声明,函数头,加“;”结尾,就构成了函数原型。
函数先定义再调用:
#include<>
void sum(int begin,int end) //定义
{
int i;
int sum=0;
for(i=begin;i<=end;i++)
{
sum=sum+i;
}
printf("%d到%d的和为%d\n",begin,end,sum);
}
int main()
{
sum(10,20);
sum(30,40);
return 0;
}
函数先调用再声明:
#include<>
void sum(int begin,int end); //声明
int main()
{
sum(10,20);
sum(30,40);
return 0;
}
void sum(int begin,int end) //定义
{
int i;
int sum=0;
for(i=begin;i<=end;i++)
{
sum=sum+i;
}
printf("%d到%d的和为%d\n",begin,end,sum);
}