美文网首页
C++的三种参数传递方式

C++的三种参数传递方式

作者: YocnZhao | 来源:发表于2019-04-03 16:31 被阅读0次

作为一个java开蒙的程序狗,深刻感受到C++的万恶。
二话不说,代码开题。
testParam.cpp

void testMyParam1(std::vector<int> vectors) {
    vectors.push_back(11);
}
void testMyParam2(std::vector<int> *vectors) {
    vectors->push_back(11);
}
void testMyParam3(std::vector<int> &vectors) {
    vectors.push_back(11);
}

main.cpp

#include <iostream>
#include <vector>
#include "testParam.h"

int main() {
    std::vector<int> myVector;

    myVector.clear();
    testMyParam1(myVector);
    std::cout << myVector.size() << std::endl;

    myVector.clear();
    testMyParam2(&myVector);
    std::cout << myVector.size() << std::endl;

    myVector.clear();
    testMyParam3(myVector);
    std::cout << myVector.size() << std::endl;

    return 0;
}

运行结果如下:


运行结果

C++有三种参数传递方式

  • 值传递
  • 指针传递
  • 引用传递
    分别对应了上面的testMyParam1,testMyParam2,testMyParam3方法。

1、值传递:形参是实参的拷贝,改变函数形参的值并不会影响外部实参的值,这是最常用的一种传参方法,也是最简单的一种传参方法,只需要传递参数,返回值那是return考虑的;
2、指针传递:指针传递参数从本质上来说也是值传递,它传递的是一个地址。[值传递过程中,被调函数的形参作为被调函数的局部变量来处理,即在函数内的栈中开辟内存空间以存放由主调函数放进来的实参的值,从而成了实参的一个副本(记住这个,函数内参数的是实参的副本)]。由于指针传递的是外部实参的地址,当被调函数的形参值发生改变时,自然外部实参值也发生改变。
3、引用传递:被调函数的形参虽然也作为局部变量在栈中开辟了内存空间,但是栈中存放的是由主调函数放进的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中实参变量(实参和形参通过引用,合二为一,说白点就是:一个人,有两个名字那种)。因此,形参的任何改动都会直接影响到实参。

作为Java开蒙的程序员,我们知道Java里面其实只有两种传递:

  • 值传递
  • 引用传递
    因为Java里面并没有指针的概念所以也就没有所谓的指针传递,但明显Java里面的两种传递方式跟C++的还是不同的。
    Java的基本类型(其实包括String,数组等)是值传递,对象都是引用传递。而C++中的值传递或者引用传递则没有这个限制。

相关文章

  • C++ 引用传递的学习

    C++ 引用与引用作为函数的参数C++函数的三种传递方式为:值传递、指针传递和引用传递 C++ 上课习题 刘月林2...

  • C++ 函数调用时的三种参数传递方式

    C++ 函数调用时的三种参数传递方式 [TOC] 为了又一年校招季,准备开始刷题了。决定使用 C++,那么先复习一...

  • Java中是否有引用传递

    前言 总所周知,C++中有值传递、指针传递、引用传递三种参数传递类型。那么我们就来探究Java的传递类型。 我们先...

  • C++的三种参数传递方式

    作为一个java开蒙的程序狗,深刻感受到C++的万恶。二话不说,代码开题。testParam.cpp main.c...

  • C#参数传递

    当调用带有参数的方法时,您需要向方法传递参数。在 C# 中,有三种向方法传递参数的方式: 1.值参数 这种方式复制...

  • ng路由传参

    angular的路由传递参数一共有三种方式 固定参数、动态路由参数、查询参数三种叫法是本人习惯叫法 非官方 仅供...

  • vector 作为函数参数

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

  • Python 函数(2)

    这篇主要总结Python函数参数传递。 背景### 函数的参数传递方式常见的有三种:1、传值调用;2、传指针调用;...

  • Android打包,通过命令行来控制C++代码的宏

    参数传递流程 实现 gradle对命令行参数的响应 Android默认的C++构建方式 在默认的Android构建...

  • C++引用与指针

    C++里函数参数传递有3种方式:值传递,指针传递,引用传递 其中值传递大家都很清楚,传递到函数中的值是原值的一个拷...

网友评论

      本文标题:C++的三种参数传递方式

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