3.1 函数的定义与使用
3.1.1 函数的定义
函数是面向对象程序设计中,对功能的抽象
3.1.2 函数的调用
- 调用前先声明函数原型:
- 调用形式
- 函数名(实参列表)
- 嵌套调用:函数可以嵌套调用,但不允许嵌套定义。
- 递归调用:函数直接或间接调用自身
例:
由于函数power 的定义位于调用之后,所以需要先对函数原型加以声明。
例: 输入一个8位二进制数,将其转换为十进制数输出。11012 = 1(23) + 1(22) + 0(21) + 1(20) = 1310 所以,如果输入1101,则应输出13
例:
1 #include <iostream>
2 using namespace std;
3
4 int fun1(int x,int y)
5 {
6 int fun2(int m);
7 return (fun2(x)+fun2(y));
8 }
9
10 int fun2(int m)
11 {
12 return (m*m);
13 }
14
15 void main(void)
16 {
17 int a,b;
18 int fun1(int x,int y);
19 cin>>a>>b;
20 cout<<"a、b的平方和:" <<fun1(a,b)<<endl;
21 }
- 递推: 4!=4×3! → 3!=3×2! → 2!=2×1! → 1!=1×0! → 0!=1
- 未知 → 已知
- 回归: 4!=4×3!=24 ← 3!=3×2!=6 ← 2!=2×1!=2 ← 1!=1×0!=1 ← 0!=1
- 未知 ← 已知
1 #include <iostream>
2 using namespace std;
3 long fac(int n)
4 {
5 long f;
6 if (n<0)
7 cout<<"n<0,data error!"<<endl;
8 else if (n==0) f=1;
9 else f=fac(n-1)*n;
10 return(f);
11 }
12 void main()
13 {
14 long fac(int n);
15 int n;
16 long y;
17 cout<<"Enter a positive integer:";
18 cin>>n;
19 y=fac(n);
20 cout<<n<<"!="<<y<<endl;
21 }
运行结果:
Enter the number of diskes:3
the steps to moving 3 diskes:
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
3.1.3 函数的参数传递
- 声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象。
- 一旦一个引用被初始化后,就不能改为指向其它对象。
3.2内联函数
- 内联函数体内不能有循环语句和switch语句。
- 内联函数的声明必须出现在内联函数第一次被调用之前。
- 对内联函数不能进行异常接口声明。
3.3 带默认形参值得函数
3.4函数的重载
- 重载函数的形参必须不同: 个数不同或类型不同。
- 编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。
- 不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。这样不好。
例子:编写三个名为add的重载函数,分别实现两整数相加、两实数相加和两个复数相加的功能。
运行结果:
Enter two integer: 3 5
integer 3+5=8
Enter two real number: 2.3 5.8
real number 2.3+5.8= 8.1
Enter the first complex number: 12.3 45.6
Enter the second complex number: 56.7 67.8
complex number (12.3,45.6)+(56.7,67.8)= (69,113.4)
3.5 C++ 系统函数
3.6 深度搜索
3.6.1 运行栈与函数调用的执行
3.6.2 函数声明与类型安全
来源:https://www.cnblogs.com/alec7015/p/12391839.html

