函数是程序代码的一个自包含单元,用于完成某一特
定的任务。
有的函数完成某一操作;
有的函数计算出一个值。
通常,一个函数即一个程序必须有且只有一个main( )函数,C++从main( )
函数开始执行。
C++语言中,所有函数都是平行独立的,无主次、相
互包含之分。函数可以嵌套调用,不可嵌套定义。能完成某一特定操作,又能计算数值。
函数分类
从用户使用的角度看,函数有两种:
(1) 系统函数,即库函数。这是由编译系统提供的,用户
不必自己定义这些函数,可以直接使用它们。
(2) 用户自己定义的函数。用以解决用户的专门需要。
用户在设计程序时,可以将完成某一相对独立功能的程序定义为一
个函数。用户在程序中,根据应用的需要,由用户自己定义函数,
这类函数称为用户自定义的函数。
函数分类
从用户使用的角度看,函数有两种:
(1) 系统函数,即库函数。
(2) 用户自己定义的函数。
从函数的形式看,函数分两类:
(1) 无参函数。调用函数时不必给出参数。
(2) 有参函数。在调用函数时,要给出参数。在主调函数
和被调用函数之间有数据传递
标准函数/库函数
库函数是C++编译系统已预定义的函数,用户根据需要可以
直接使用这类函数。库函数也称为标准函数。
•C++把一些常用函数作为库函数提供给用户,用户可以直
接使用系统提供的库函数:
•数学计算函数(如sqrt()、pow(),fabs(),exp()等, cmath)
•字符串处理函数(string)
•标准输入输出函数等(iostream),
•用户使用任一库函数时,直接使用,不用定义,但在程序
中必须包含相应的头文件。
如 #include<iostream>等。
定义函数的一般形式
类型标识符 函数名()
{声明部分
语句
}
void printstar() //定义printstar函数
{
cout<<"************ "<<endl;
}
般形式 类型标识符 函数名()
{声明部分
语句
}
例如:
void printstar (void )
{ cout<<"* * * * * * * * * * *\n";
}
void print_message (void)
{ cout<<"How do you do! \n";
}
void main(void )
{ printstar ( );
print_message ( );
printstar( );
}
定义有参函数的一般形式
类型标识符 函数名(形式参数表列)
{声明部分
语句
}
int max(int x,int y)
{int z;
z=x>y?x:y;
return (z);
}
C++要求在定义函数时必须指定函数的类型。
函数参数和函数的值
1 在定义函数时 形式参数和实际参数 函数名后面括号中的变量名称为
形式参数(formal parameter,简称形参)。
形参是被调函数中的变量;
在主调函数中调用一个函数时,函数名后面括
号中的参数(可以是一个表达式)称为实际参数
(actual parameter,简称实参)。
实参是主调函数赋给被调函数的特定值。
实参可以是常量、变量或复杂的表达式,不管是哪
种情况,在调用时实参必须是一个确定的值。
实参可以是常量、变量或表达式,但要求有确定的值。
实参变量对形参变量的数据传递是"值传递",即单向传
递,只由实参传给形参,而不能由形参传回来给实参。在
内存中实参、形参分占不同的单元。
实参与形参一一对应,类型应相同或赋值兼容。
不同的函数中可以使用相同的变量名和形参名,他们是
不同的变量。
函数的返回值
函数的返回值通过return语句获得。函数只能有唯一的
返回值。
函数返回值的类型就是函数的类型。
return语句可以是一个表达式,函数先计算表达式后再返
回值。
return语句还可以终止函数,并将控制返回到主调函数。
return 语句之后的代码是不能执行的代码。
一个函数中可以有一个以上的return语句,执行到哪一
个return语句,哪一个语句起作用。
int add ( int a, int b)
{
return (a+b); 先计算后赋值
}
int max ( int a, int b)
{
if (x>y)
return x ;
else return y; 可以有多个返回语句
}
若函数体内没有return语句,就
一直执行到函数体的末尾,然
后返回到主调函数的调用处。
既然函数有返回值,这个值当然应属于某一个确定的类型,
应当在定义函数时指定函数值的类型。
int max (float a, float b) // 函数值为整型
函数返回值的类型,也是函数的类型
不带返回值的函数可说明为void型。
函数的类型与函数参数的类型没有关系。
double blink ( int a, int b)
如果函数的类型和return表达式中的类型不一致,则以
函数的类型为准。函数的类型决定返回值的类型。对数值
型数据,可以自动进行类型转换。