提前声明:
本文内容为华北水利水电大学研究生C++课程,如有 侵权请告知,作者会予以删除
1.函数
函数作用 —— 任务划分;代码重用
定义形式 类型 函数名 ( 形式参数表 ) {语句序列 }
调用形式 函数名 ( 实际参数表 );
函数体中由 return 语句返回的值的类型。没有返回值其类型为void
实际参数表 与形式参数必须在个数、类型、位置一一对应,可以是表达式
return 语句形式:
return 表达式 或 return (表达式 )
作用:
1返回函数值
2不再执行后续语句,程序控制返回调用点 一个函数体内可以有多个return 语句
3 表达式 返回值的类型与函数类型不相同时,自动强制转换成函数的类型
函数原型;函数调用;函数定义;示例:
#include <iostream>
using namespace std ;
double max( double, double ) ; // 函数原型
//double max( double x, double y =2) ; // 函数原型 y的默认值为2
int main()
{ //double max( double, double ) ; // 函数原型也可以在此定义double a, b, c, m1, m2 ;cout << "input a, b, c :\n" ;cin >> a >> b >> c ;m1 = max( a, b ) ; // 函数调用m2 = max( m1, c ) ;cout << "Maximum = " << m2 << endl ;
}
double max( double x, double y ) // 函数定义
{ if ( x > y ) return x ;else return y ;
}
1.2函数参数传递
C++有三种参数传递机制:值传递;指针传递;引用传递;
调用函数时,实参表达式的值被复制到相应形参标识的对象中,并按形参类型强制转换
1.2.3指针参数
形参指针对应的实际参数是地址表达式,即对象的指针
void func ( int * p )
{ int a = 10 ;*p += a ;p = &a;*p = *p + a ;cout << "*p = " << *p << endl ;cout << "a = " << a << endl ;
}
//以上程序正常运行
void func (const int * p )
{ int a = 10 ;*p += a ;//不能修改常对象p = &a;*p = *p + a ;//不能修改常对象cout << "*p = " << *p << endl ;cout << "a = " << a << endl ;
}
//以上程序不能正常运行
void func (int *const p )
{ int a = 10 ;*p += a ;p = &a;//不能修改指针常量*p = *p + a ;cout << "*p = " << *p << endl ;cout << "a = " << a << endl ;
}
//以上程序不能正常运行
1.2.4引用参数
当形参为引用参数,调用函数时,形参是实参的别名,执行函数时,通过别名在实参上操作, 函数返回,实参的别名取消。