郭震 AI公众号:郭震AI

21 C++函数参数传递

发布日期:

分类: Cplus小白

预计阅读: 2 分钟

阅读次数: 0

预计阅读2 分钟
结构重点5 个
图文要点0 张
正文规模765 字

C++完整教程

在上一篇中,我们探讨了函数的定义与声明。了解了如何定义一个函数以及如何声明一个函数是非常重要的,而在本篇中,我们将深入讨论函数的参数传递方式。参数传递是函数外部与内部进行数据交换的桥梁,合理的参数传递可以大大提高程序的可读性与可维护性。

参数传递的基本方式

C++中的函数参数传递主要有以下几种方式:

  1. 值传递
  2. 引用传递
  3. 指针传递

1. 值传递

在值传递中,函数参数的值会被复制到函数内部,因此在函数内部对参数的修改不会影响外部变量。使用这种方式时,函数的参数是以一个副本的形式存在的。

示例代码

#include <iostream>

void modifyValue(int val) {
    val = 20; // 修改的是副本
    std::cout << "Inside function: " << val << std::endl;
}

int main() {
    int number = 10;
    std::cout << "Before function: " << number << std::endl;
    modifyValue(number);
    std::cout << "After function: " << number << std::endl; // number 仍然是 10
    return 0;
}

输出:

Before function: 10
Inside function: 20
After function: 10

在这个例子中,number的值在进入modifyValue函数时被复制,因此函数内部对val的修改不会影响到number

2. 引用传递

在引用传递中,实际参数的地址被传递给函数,函数内部对参数的任何修改都会反映到实际参数上。这种方式能够提高效率,因为避免了数据的复制。

示例代码

#include <iostream>

void modifyReference(int& ref) {
    ref = 30; // 修改的是原始数据
    std::cout << "Inside function: " << ref << std::endl;
}

int main() {
    int number = 10;
    std::cout << "Before function: " << number << std::endl;
    modifyReference(number);
    std::cout << "After function: " << number << std::endl; // number 变为 30
    return 0;
}

输出:

Before function: 10
Inside function: 30
After function: 30

在这里,我们使用了int& ref来进行引用传递,这使得modifyReference函数直接操作number的引用,从而修改了其值。

3. 指针传递

指针传递与引用传递类似,同样可以直接修改实际参数。不同的是,使用指针时需要对指针进行解引用才能访问或修改值。

示例代码

#include <iostream>

void modifyPointer(int* ptr) {
    *ptr = 40; // 修改指针指向的值
    std::cout << "Inside function: " << *ptr << std::endl;
}

int main() {
    int number = 10;
    std::cout << "Before function: " << number << std::endl;
    modifyPointer(&number); // 传递number的地址
    std::cout << "After function: " << number << std::endl; // number 变为 40
    return 0;
}

输出:

Before function: 10
Inside function: 40
After function: 40

在这个例子中,使用int* ptr作为参数接收一个指向number的指针,并通过*ptr直接修改指针指向的值。

小结

在本篇中,我们探讨了C++中函数的参数传递方式,包括值传递引用传递指针传递。选择合适的参数传递方式可以提升程序的性能及可读性,尤其是在处理大型数据时,使用引用或指针能够避免不必要的数据复制。

在下一篇中,我们将深入讨论函数的返回值与重载,欢迎继续关注!

分享文章

转发到常用平台

微信/朋友圈可先复制链接

继续阅读

更多相关文章推荐

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...