August 8, 2023

函数传值、引用还是指针?

在学习C++的过程中有些新手可能听说了C++传引用减少拷贝次数增快程序速度,然后就会去一股脑全部使用引用

这篇博客就是来简单说明一下让新手有些了解

本文仅作本人经验所记,并不是很全面

传值

这是一般学习C++时接触的第一种传参方式比如这样

int add(int a,int b){
 return a+b;
}

传值会有一定的损耗 因为需要将传入的参数复制一遍再传入函数中

参数的值只能传入 不能传出

这个一般适用于 可以轻松复制的类型并且足够的小 比如 int、float、double 之类的

传引用

在需要操作修改外部的值的时候就需要传引用来解决了

void add(int& a,int& b,int& c){
    c = a+b;
}

这样就减少了复制的操作

但是这样并不是适合于所有的 最好不要传原始数据类型 这样可能会阻止编译器优化

适用于那些 自定义的类

传const引用

这个适用于不修改传入参数的值,保证其不被改变

int add(const int& a,const int& b){
    return a+b;
}

传指针

形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作

void add(int* a,int* b,int* c){
    *c = *a+*b;
}

提示:编译器并不总是遵循你指定的参数传递约定

About this Post

This post is written by JinHong Zeng, licensed under CC BY-NC 4.0.

#CPP