美文网首页
c++函数传参方式

c++函数传参方式

作者: JeremyL | 来源:发表于2022-05-11 12:30 被阅读0次

# 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 引用

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

  • 引用变量是一个变量的别名,就是给已经存在的变量取一个新的名字。记住:
    • 1)不存在空引用;
    • 2)引用被初始化为一个对象,就不能被指向到另一个对象;
    • 3)引用必须在创建时被初始化。
    • 4)对引用的操作就是对原变量的操作

创建引用:

类型名 & 别名 = 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++ 引用

相关文章

  • vector 作为函数参数

    参考 C++(笔记)容器(vector)作为函数参数如何传参 vector作为参数的三种传参方式

  • c++函数传参方式

    # 1. 直接传值 函数内部的计算并不会影响全局变量;也就是形参的改变不影响实参; 输出结果显示,形参变化,并未影...

  • 初学python,调用固定参,不固定参函数遇到的问题!

    函数调用时的参数传递方式:(调用函数) 传递方式有以下四种: 位置传参 序列传参 关键字传参 字典关键字传参 --...

  • python函数详解

    函数定义 格式 函数定义实例: 5050 三种传参方式 按位置顺序传参 李诗才 按关键字传参,参数顺序可以任意 李...

  • C++中的构造函数

    C++中构造函数有三类 无参构造函数 有参构造函数 代码形式 调用有参构造函数的三种方式:2.1) 括号法 2.2...

  • ES5_call,apply,bind用法详解19-10-15

    1.call 和 apply传参的方式 2.bind传参的方式bind的特点:绑定完this不会立即调用当前函数,...

  • 函数变参的使用

    介绍C/C++,java,和go语言对函数变参的使用。 1. C/C++语言的变参 1.1 变参函数声明 变参函数...

  • 19-3-18 python函数传参方式

    python函数传参跟js很像: 直接传参方式: 形参实参按顺序一一对应,跟js一样 指定传参 参数顺序不用一一对...

  • Flutter 路由传参小结

    Flutter路由传参总体来说有两种方式,一种是通过构造函数传参,一种是通过路由参数传参。这两种方式都可以使用自定...

  • 函数

    简单函数格式 定义 调用函数 传参函数格式: 传参数 定义 注意 重点 实例(简单) 实例(传参) 实例函数(调用...

网友评论

      本文标题:c++函数传参方式

      本文链接:https://www.haomeiwen.com/subject/ssudurtx.html