c++函数传参方式

2022-05-11  本文已影响0人  JeremyL

# 1. 直接传值

函数内部的计算并不会影响全局变量;也就是形参的改变不影响实参;

#include<iostream>
using namespace std;
void add(int a, int b)
{
    a = a + b;
    cout << a<< " "<< b<<endl;
    cout << &a<<endl;
}
int main()
{
    int a = 1;
    int b = 2;
    add(a, b);
    cout << a<<" "<<b<<endl;
    cout << &a<<endl;
    return 0;
}

/*
3 2
0x7ffc185a631c
1 2
0x7ffc185a6338
*/

输出结果显示,形参变化,并未影响到实参;并且二者存放的地址也不一样。

# 2. 传指针

#include<iostream>
using namespace std;
void add(int *a, int *b)
{
    *a = *a + *b;
    cout << *a<<endl;
    cout << a<<endl;
    cout << &a<<endl;
    int d = 11;
    a = &d;
    cout << *a<<endl;
    cout << a<<endl;
    cout << &a<<endl;
}
int main()
{
    int c = 1;
    int b = 2;
    int* a;
    a = &c;
    add(a, &b);
    cout << *a<<endl;
    cout << a<<endl;
    cout << &a<<endl;
    return 0;
}


/*
3
0x7fff6d3ff62c
0x7fff6d3ff5f8
11
0x7fff6d3ff60c
0x7fff6d3ff5f8
3
0x7fff6d3ff62c
0x7fff6d3ff620
*/

# 3. 传引用

&可以用来申明引用和取地址;

## 3.1 引用

二者的区别可以从定义看出来:

创建引用:

类型名 & 别名 = var;

## 3.2 取址符

获取变量在内存中的储存地址;一般赋值给指针;

## 3.3 引用作为参数的实例

#include<iostream>
using namespace std;
void add(int &a, int &b)
{
    a = a + b;
    cout << a<< " "<< b<<endl;
    cout << &a<<endl;
}
int main()
{
    int a = 1;
    int b = 2;
    add(a, b);
    cout << a<<" "<<b<<endl;
    cout << &a<<endl;
    return 0;
}

/*
3 2
0x7fff5baba32c
3 2
0x7fff5baba32c
*/

对引用操作就是对变量直接操作,因此函数内部对形参的改变会直接改变外部变量。

# 4. 总结

# 参考:

C++ 函数参数传递的三种方式 (传参、传地址、传引用)

C++ 引用

上一篇 下一篇

猜你喜欢

热点阅读