C++程序设计之函数
1、函数是C++源程序的基本模块。函数的使用是通过函数调用完成的。C++程序的全部工作都是由各式各样的函数完成的。
2、函数由返回值类型、函数名、参数表和函数体组成。函数定义:返回值类型 函数名( 类型1 参数名称1,类型2 参数名称2,类型3 参数名称3……){ 语句}
3、返回值类型指明了函数返回值的类型。函数可以没有返回值,用void指定返回类型。函数名是由用户定义的标识符,函数名后面有括号,其中可以无参数,但括号是必不可少的。函数的参数是用于向函数传递数据的变量,参数可以为空
4、如果函数是在调用语句后定义的,在调用之前应对被函数进行声明。返回值类型 函数名(类型 参数,类型 参数……); 当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。
5、函数的参数分为形参和实参 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在调用语句中,进入被调函数后,实参不能使用。
6、形参变量只有在被调用时才分配内存单元。实参可以是常量、变量、表达式等。实参和形参的数量和顺序应严格一致。注:函数调用中的参数传递发生的数据传送是单向的。
7、函数可以在参数表中设置一个或多个参数的缺省值,缺省参数只能从后向前替代缺少的实参值。提供缺省参数时,也应该从后向前设置缺省值。参数缺省值一般出现在函数的声明中。
8、数盲褓梆尺组可以作为函数的参数使用,进行数据传递。把数组元素(下标变量)作为实参使用把数组名作为函数的形参和实参使吹涡皋陕用用数组元素作实参时,形参并不是数组,而是和数组类型相同的变量。用数组名作函数参数时,要求形参和相对应的实参都必须是类型相同的数组注:函数形参对数组大小不敏感。
9、函数的返回值又被称作函数值。脑栲葱蛸函数值只能通过return语句返回调用它的函数。 在函数中允许有多个return语句,可以在函剞麽苍足数内的任何地方结束函数执行并返回函数值。 返回值类型不为void的函数,必须有return语句
10、通过对函数的调用来执行函数体。调用方式:函数名(实际参数表)对无参函数调用时则无实参表。 实参表中的参数可以是常数、变量或其他构造类型数据及表达式,各实参之间用逗号分隔。
11、3种方式瓢遥费涓调用函数:1、函数表达式 int c= max(x,y);2、函数语句 printf ("%D",a);3、作为函数实参 printf烫喇霰嘴("%d",max(x,y));
12、C语言中不允许作嵌套的函数定义。不能在函数内部定义其他函数。C++允许在一个函数的定义中出现对另一个函数的调用,这就是函数的嵌套调用。
13、函数的递归调用 一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。注:递归函数必须有终止条件,否则会出现死循环调用,导致程序崩溃
14、ff(5);调试环境下的【调用堆栈】窗口结果如下
15、函数重载,函数名一样,参数不一样的为重载函数。如果函数名一样且参数一样,只有返回值不一样,这样不是重载函数。
16、这里要注意一个问题,隐式类型转换导致重载函数产生二义性。
17、内联函数,用inline关键字修饰的函数是内联函数。1.关键字inline必虔銎哂埽须与函数定义体放在一起才能使函数成为内联2.瓴烊椹舟将inline放在函数声明前面不起任何作用。3.如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。4.如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。内联函数的优势:1.类型安全检查 2.自动类型转换3.可以作为类的成员