文档介绍:第5章函数
函数的定义
函数的调用
指针与函数
局部变量和全局变量
变量的存储类型
内联函数
函数重载
函数模板
返回
§5-1 函数定义
函数体
函数体空时为空函数
例:
int max(int x,int y)
{
return x>y?x:y;
}
数据类型函数名(形参列表)
{
语句
}
函数值的类型
缺省为int 类型
若函数无返回值,则类型为void
列表为空时,为无参函数
但圆括号必须有,如main函数
函数说明
返回
void main()
{
.
.
.
}
有参函数
和
无参函数
N! 三角形面积
long power(int n)
{
int i;
long l;
for (i=1;i<=n;i++)
l*=i;
return l;
}
float area(float x,float y,float z)
{
float s;
if (x+y<z||x+z<y||y+z<x)
return 0;
s=(x+y+z)/2;
float t= sqrt(s*(s-x)*(s-y)*(s-z));
return t;
}
返回/return语句
语句格式:
return 表达式;
return (表达式);
流程控制语句,从被调用函数返回到调用函数,并计算表达式的值作为函数的返回值。( 注意:只能返回一个值)
函数值的类型:以函数定义的类型为准,若不同,需将return语句表达式的值转换类型。
在一个函数中可有多个return语句,但每次被调用只能执行一个。例,判断素数(或求三角形面积)
int sushu(int n)
{
int k,i;
k=sqrt((double)n);
for (i=2;i<=k;i++)
if (!(n%i)) return 0;
return 1;
}
#include<>
#include<>
void main()
{
int i;
for (i=2;i<100;i++)
if (sushu(i))
cout<<"\t”<<i;
}
§5-2 函数的调用
二、函数调用形式
一、对被调函数的声明
三、函数调用过程
返回
一、对被调函数的声明(函数原型)
例:float area(float,float,float);
使用库函数时,一般在文件的开头用#include 命令将包含该函数说明的头文件加入到程序中
使用用户自定义函数,应在主调函数中先对被调函数进行声明。
当被调函数的定义写在主调函数后面时
才需声明
函数的声明形式:数据类型被调函数的函数名(形参类型说明);
example1:求三角形面积
#include<>
#include <>
float area(float,float,float);/*声明*/
void main()
{float a,b,c,s;
cout<<"\nPlease input a,b,c=";
cin>>a>>b>>c;
s=area(a,b,c);
cout<<“area=“<<s<<“\n”;}
float area(float x,float y,float z)
{ float s;
if (x+y<z||x+z<y||y+z<x)
return 0;
s=(x+y+z)/2;
return sqrt(s*(s-x)*(s-y)*(s-z));
}
#include<>
#include <>
float area(float x,float y,float z)
{ float s;
if (x+y<z||x+z<y||y+z<x)
return 0;
s=(x+y+z)/2;
return sqrt(s*(s-x)*(s-y)*(s-z));
}
void main() /*不需声明*/
{ float a,b,c,s;
cout<<"\nPlease input a,b,c=";
cin>>a>>b>>c;
s=area(a,b,c);
cout<<“area=“<<s<<“\n”;
}
返回
实参表可包含多个参数,用逗号分开;可为常量、变量、表达式(先求值,再将值传递给形参);
二、函数调用形式
函数名(实参列表)
当函数未被调用时,形参不占内存,当函数被调用时,为形参分配内存,并将实参的值传递给形参;
按照书写参数的先后次序(与名字无关),实参将值传递给形参,是“单向性”的“值传递”。要求其类型和个数要一致。例如:
float area(float a,float b,float c)
则调用语句应为:fl