C++的那些事:函数全解析
作者:网络转载 发布时间:[ 2014/5/14 13:12:53 ] 推荐标签:函数解析 net
一、函数的结构
函数在C++中可能出现在三种地方,一是函数的定义,它包括了如上图的结构;二是函数的声明,它与函数的定义相比,没有了函数体部分;三则是函数的调用。当然,不同的函数定义可以还会稍有不同,比如类的成员函数、内联函数等。这里我们主要讨论函数的调用时需要注意的一些问题。
二、参数传递
我们将函数定义或声明里的参数叫形参,而在调用函数时传入的参数叫实参。那么根据形参类型的不同,有几下形式的参数传递。
1,非引用形参
1)普通的内置类型
普通非引用类型的参数通过复制对应的实参实现形参的初始化。当用实参的副本初始化形参时,函数并没有访问调用所传递的实参的本身,因此函数不可能改实参的值。比如下面的交换两个数的程序:
void swap(int v1, int v2)
{
int temp = v1;
v2 = v1;
v1 = temp;
}
swap(a, b);// 调用swap
|
上面程序中,实参为a与b,但是在调用时,v1与v2接受的是a与b的副本,所以实际上a与b的值没有变化。
2)指针形参
函数的形参可以是指针,此时将复制实参指针,其实这类跟1)原理类似,函数内并无法改变实参的指针值。只是函数可以通过复制到的地址改变实参指针所指向的值。
void swap(int* v1, int* v2)
{
int temp = *v2;
*v2 = *v1;
*v1 = temp;
}
int main()
{
int a = 10,b = 20;
int *p1 = &a,*p2 = &b;
swap(p1,p2);
return 0;
}
|
上面程序中定义的swap的形参为指针类型,main中调用swap,实际上swap并不能改变p1与p2的值,只是改变了它们所指向的值。
3)const 形参
对于普通的非引用类型用const修饰实际上是没有意义的,因为本来函数不会改变实参的值。像下面的定义,实际中编译器会忽略const的定义,而将其视为int型。
void fcn(const int i);
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11