C++中函数的优点
函数有很多优点,但这里主要介绍以下两点:
1. 提高代码可重用性
通过在C++中创建函数,可以调用函数多次。 所以实现相同的功能不需要一遍又一遍地编写相同的代码。
2. 代码优化
函数能使代码优化,我们不需要写很多代码。
函数类型
C++编程语言中有两种类型的函数:
1.库函数:
是在C++头文件中声明的函数,如:ceil(x)
,cos(x)
,exp(x)
等。
2. 用户定义的函数:
是由C++程序员创建的函数,以便他/她可以多次使用它。 它降低了大程序的复杂性并优化了代码。
在C++中通过值调用
在值调用中,不修改原始值。
在值调用中,传递给函数的值由函数参数本地存储在堆栈存储器位置。 如果更改函数参数的值,则仅更改当前函数的值,函数内修改的参数值不会反映到函数的外部。 它不会改变调用方法中的变量的值
在C++中通过引用调用
在引用调用中,原始值会被修改,因为我们是通过引用(地址)来调用的。
这里,值的地址在函数中传递,因此实际和形式参数共享相同的地址空间。 因此,在函数内部改变的值会反映在函数内部以及外部。
在C++中通过值调用和通过引用调用的区别
序号 | 通过值调用 | 通过引用调用 |
---|---|---|
1 | 将值的副本传递给函数 | 将值的地址传递给函数 |
2 | 在函数内部进行的更改不会反映在函数外部 | 在函数内部进行的更改也反映在函数外部 |
3 | 实际和形式参数将在不同的内存位置创建 | 实际和形式参数将在同一内存位置创建 |
C++递归
当函数在同一个函数内调用时,它被称为C++中的递归。 调用相同函数的函数(函数自已调用自已)称为递归函数。在函数调用之后调用自身并且不执行任何任务的函数称为尾递归。 在尾递归中,我们通常使用
使用C++语言中的递归来打印一个数的阶乘。return
语句调用相同的函数。1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int factorial(int); 6 int fact,value; 7 cout<<"Enter any number: "; 8 cin>>value; 9 fact=factorial(value); 10 cout<<"Factorial of a number is: "<<fact<<endl; 11 return 0; 12 } 13 14 int factorial(int n) 15 { 16 if(n<0) 17 return(-1); /*Wrong value*/ 18 if(n==0) 19 return(1); /*Terminating condition*/ 20 else 21 { 22 return(n*factorial(n-1)); 23 } 24 }
上面代码执行结果如下所示 -
1 Enter any number: 5 2 Factorial of a number is: 120
C++存储类
存储类用于定义C++程序中变量和/或函数的生命周期和可见性。
寿命是指变量保持活动的时间段,可见性是指可访问变量的程序的模块。
有五种类型的存储类,可以在C++程序中使用
- 自动(Automatic)
- 寄存器(Register)
- 静态(Static)
- 外部(External)
- 可变(Mutable)
静态存储类
静态变量只初始化一次,直到程序结束。 它保留可在多个函数之间调用的值。
静态变量由编译器提供的一个默认值:
静态变量由编译器提供的一个默认值:
0
外部存储类
extern
变量对所有程序都可见。 如果两个或多个文件共享相同的变量或函数,则使用它。