use*_*158 3 c++ function pass-by-reference pass-by-value pass-by-pointer
如果我有一个函数,它接受一个整数的指针,并且我从我的main传递一个整数变量的引用,这是按值调用还是通过引用调用?示例代码:
#include <iostream>
using namespace std;
void fun(int *a){
//Code block
}
int main(){
int a = 5;
fun(&a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码,是起作用的呼叫乐趣通过值的呼叫或通过引用调用?
您的调用是值传递,但类型int*不是参数类型int.这意味着指针的副本被生成并传递给函数.您可以更改它指向的值而不是指针的值.
所以如果你的功能是这样的话
void fun(int *a)
{
*a = 10;
}
Run Code Online (Sandbox Code Playgroud)
和你调用main这样
int main() {
int b = 1;
fun(&b);
// now b = 10;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你可以b通过将指针传递给你的函数来修改它的值.
如果您执行以下操作也会产生相同的效果 - 即通过引用传递
void fun2(int& a)
{
a = 5;
}
int main()
{
int b = 10;
fun2(b);
// now b = 5;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在考虑第三个按值获取整数参数的函数
void fun3(int a)
{
a = 10;
}
int main()
{
int b = 1;
fun3(b);
// b is still 1 now!
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用pass by value,fun3更改传递给它的参数的副本,而不是bmain范围内的变量.
传递(非常量)引用或指针允许修改传递给它的参数.通过值或const引用传递将不允许更改传递给它的参数.
| 归档时间: |
|
| 查看次数: |
9218 次 |
| 最近记录: |