传值、传址、传引用的区别,哪个更高效?
1.传值
这种传递方式中,实参和形参是两个不同的地址空间,参数传递的实质是将原函数中变量的值,复制到被调用函数形参所在的存储空间中,这个形参的地址空间在函数执行完毕后,会被回收掉。整个被调用函数对形参的操作,只影响形参对应的地址空间,不影响原来函数中的变量的值,因为这两个不是同一个存储空间。
即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。
2.传址
这种参数传递方式中,实参是变量的地址,形参是指针类型的变量,在函数中对指针变量的操作,就是对实参(变量地址)所对应的变量的操作,函数调用结束后,原函数中的变量的值将会发生改变。
被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。
3.传引用
这种参数传递方式中,形参是引用类型变量,其实就是实参的一个别名,在被调用函数中,对引用变量的所有操作等价于对实参的操作,这样,整个函数执行完毕后,原先的实参的值将会发生改变。
被调函数对形参做的任何操作都影响了主调函数中的实参变量。
4.哪一种更高效?
在内置类型当中三种传递方式的效率上都差不多;
在自定义类型当中,传引用的更高效一些,因为它没有对形参进行一次拷贝
-
参数
+关注
关注
11文章
1833浏览量
32209 -
函数
+关注
关注
3文章
4331浏览量
62591 -
C++
+关注
关注
22文章
2108浏览量
73639
发布评论请先 登录
相关推荐
评论