目录
函数基本知识
没有返回值的函数:void函数
有返回值的函数:
函数原型
1.为什么需要函数原型?
2.函数原型的语法
3.函数原型的功能
按值传递函数参数
形参和实参
局部变量
参数问题
使用const指针参数
调用自身的函数(递归)
指向函数的指针
1.获取函数的地址
2.声明函数指针
3.使用函数指针来调用函数
要使用C++函数必须完成的工作:
提供函数定义
提供函数原型
调用函数
定义函数:可将函数分为两类,没有返回值的函数和有返回值的函数
void FunctionName(parameters)
{
statement(s)
return; // option
}
其中,FunctionName是函数名,parameters是参数列表。由于void函数没有返回值,因此在函数体中不需要使用return语句。void函数一般用于执行某个操作、产生某个副作用或输出结果等,而不需要返回任何值。
有返回值的函数将生成一个值,并将它返回给调用函数。
通用的格式:
typeName FunctionName(parameterList)
{
statements
return value
}
对于返回值的函数,必须使用 返回语句
以便将值返回给调用函数。
值 - - - - 可以是 常量、变量、表达式
。返回结果的类型必须是 typeName 类型
或 可以转换为typeName
。
C++对返回值的类型有一定的限制:不能是数组
。也可以是 其他的任何类型(整数、浮点数、指针、甚至是结构和对象)
。
函数定义命令被调用函数应返回什么类型的数据。
原型描述了函数
到编译器
的接口
,也就是将函数返回值的类型
以及参数的类型
和数量
告诉编译器。
避免使用函数原型的办法:在首次使用函数之前定义。
函数原型就是一个语句
。必须以 分号(;)
结束。
最简单的办法:复制
函数中的函数头
,然后添加分号。
对于函数原型不要求提供变量名
,有类型列表
即可。
而函数的参数列表
中,可以包括变量名、也可以不包括,原型中的变量名相当于占位符,可以不和函数定义中的变量名相同。
函数返回值
。参数数目
是否正确。参数类型
是否正确。如果不正确,则转换为正确的类型
。用于接收传递值
的变量被称为形参
。传递给函数的值叫做实参
。
在C++标准中,使用参数(argument)
来表示实参
,而参量(parameter)
来表示形参
。所以,参数传递就是 将参数
赋给参量
。
在函数中声明的变量(包括参数)为该函数私有。
在函数被调用
时,计算机为其变量分配内存
,函数结束
,就释放内存
。这种变量叫做局部变量。
函数可以有多个参数,在调用函数是,使用逗号分隔开。
如果函数的两个参数的类型相同,则必须分别指明每个参数的类型,不可以像声明常规变量那样组合在一起。
按值传递函数参数是C++中最常用的函数参数传递方式之一。这种方式会把实参的值复制一份传递给函数,并在函数内对复制的值进行操作。按值传递的函数参数定义格式如下:
void FunctionName(Type parameter)
{
// function body
}
其中,FunctionName是函数名,Type是参数的类型,parameter是参数的名称。
在C++中,可以将指针声明为const指针。const指针是指针常量,其指向的地址是固定的,不可以被改变。同时,也可以将指向const数据的指针声明为const指针,即指向const数据的指针常量。这种指针在函数参数中被用到时,被称为const指针参数。
使用const指针参数可以防止函数内部对指针所指向的数据进行修改,在一些需要保护数据的情形下使用,提高代码的安全性。
函数调用自身的过程被称为递归。递归函数应该遵循以下两个重要的规则:
1.基本情况(也称作递归终止条件):递归函数必须包含一个基本情况,当满足该情况时,递归将停止调用自身。
2.递归情况:递归函数必须包含一个递归情况,当满足该情况时,函数将调用自身。
获取函数地址的方式:使用函数名(后面不带参数)
即可。
要将函数作为参数传递
,必须传递函数名
。一定要区分传递的是函数地址还是函数的返回值。
声明指向某种数据类型的指针时,必须指定指针指向的类型
。
对于函数而言,声明指向函数的指针时,也必须指定指针指向的函数类型
。也就是说,声明应像函数原型
一样指出函数的信息。
使用指针来调用被指向的函数。