参考资料:
C++ Primer 第 5 版
1.1 什么是函数
函数是一个命名了的代码块,函数也被称为接口,顾名思义,方便别人调用
int Add(int iNumberA, int iNumberB) //iNumberA,iNumberB 均为形参
{
int iTotal = iNumberA + iNumberB;
return iTotal;
}
1.2 函数的组成
四个部分:返回类型,函数名字,由 0 个或多个形参组成的列表,函数体(必须放在一对花括号内)
如上例所示,int 为返回类型,Add 是函数名字,int iNumberA, int iNumberB 为形参列表,中括号内的两行代码为函数体
1.3 调用函数
int iValA = 5, iValB = 6;
int iCount = Add(iValA, iValB); //iValA, iValB 均为实参
调用函数执行的 2 项工作:实参初始化函数对应的形参,将控制权转移给被调用函数(程序执行被调用函数,主函数的执行被暂时中断)
return 语句功能:返回 return 语句中的值,将控制权从被调函数转移回主调函数
1.4 形参和实参
原则:个数统一,类型匹配,顺序对应
Add(4); //错误,参数个数少了 1 个
Add(4, 5, 6); //错误,参数个数多了 1 个
Add("aaa", "bbb"); //错误,参数类型不同
1.5 形参列表
每个变量的类型说明符都要写出来,任意两个形参不能同名
1.6 返回类型
返回类型是 void,表示函数不返回任何值,返回类型不能是数组或函数类型,但可以是指向数组或函数的指针
1.7 小练习
1.7.1 实参与形参的区别:实参是传递给函数的实际值,形参是函数定义的,主要是限定传给此函数的变量类型
1.7.2 编写函数实现,用户输入一个数字,计算生成该数字的阶乘,在 main 函数中完成调用
//Visual Studio 2017
#include "pch.h"
#include
#include
using namespace std;
int Factorial(int iNumber)
{
int iResult = 1;
while (iNumber > 1)
{
iResult *= iNumber;
iNumber--;
}
return iResult;
}
int main()
{
cout << "请输入一个数字:";
int iNum;
cin >> iNum;
int iRst = Factorial(iNum);
cout << "阶乘结果为:" << iRst;
}
1.7.3 编写一个函数输出其实参的绝对值
int AbsoluteValue(int iNumber)
{
if (iNumber < 0)
{
iNumber = -iNumber;
}
return iNumber;
}
1.8 局部对象
形参和函数体内定义的变量称为局部变量,仅在函数的作用域内可见
只存在于块执行期间的对象称为自动对象
static 修饰,局部静态对象,直到程序终止时才销毁
小练习:
1.8.1 说明形参、局部变量以及局部静态变量的区别,编写一个函数,同时用到这三种形式
形参是局部变量的一种,局部变量还包括函数体内的变量,作用于在函数体的内部,静态局部变量在程序终止时才销毁
int Add(int iNUmA, int iNumB)
{
static int iTotal = iNumA + iNumB;
return iTotal;
}
1.8.2 编写一个函数实现,当它第一次调用时返回 0,以后每次被调用返回值加 1
int Count()
{
static int iCount = 0;
return iCount++;
}
1.9 函数声明
函数声明放在头文件中,无须函数体,只能定义一次且放在源文件中
1.10 分离式编译
.h 文件放声明,.cpp 文件放实现
https://blog.csdn.net/dreamerway/article/details/24991099