按值传递和按引用传递

在C++语言中,有两种传递值或数据给函数的方式:按值传递(call by value)和按引用传递(call by reference)。按值传递不会修改原始值,而按引用传递会修改原始值。

1.png

让我们逐一了解C++语言中的按值传递和按引用传递。

按值传递

按值传递(Call by value)在C++中,不会修改原始值。

在按值传递中,传递给函数的值在函数参数中被局部存储在堆栈内存位置中。如果你改变了函数参数的值,只会对当前函数有效,不会改变调用者方法(如main()函数)内部的变量值。

通过下面的示例来理解C++语言中按值传递的概念:

cppCopy code
#include <iostream>  
using namespace std;  
void change(int data);  
int main()  
{  
    int data = 3;  
    change(data);  
    cout << "Value of the data is: " << data << endl;  
    return 0;  
}  
void change(int data)  
{  
    data = 5;  
}

输出:

Value of the data is: 3

按引用传递

按引用传递(Call by reference)在C++中,原始值会被修改,因为我们传递的是引用(地址)。

在按引用传递中,传递给函数的是值的地址,因此实际参数和形式参数共享相同的地址空间。因此,在函数内部和外部修改的值是相互影响的。

注意:要理解按引用传递,你必须具备指针的基本知识。

通过下面的示例来理解C++语言中按引用传递的概念:

cppCopy code
#include<iostream>  
using namespace std;    
void swap(int *x, int *y)  
{  
    int temp;  
    temp = *x;  
    *x = *y;  
    *y = temp;  
}  
int main()   
{    
    int x = 500, y = 100;    
    swap(&x, &y);  // 将值传递给函数  
    cout << "Value of x is: " << x << endl;  
    cout << "Value of y is: " << y << endl;  
    return 0;  
}

输出:

Value of x is: 100
Value of y is: 500

按值传递和按引用传递在C++中的区别:

编号按值传递按引用传递
1传递给函数的是值的副本传递给函数的是值的地址
2函数内部的修改不会反映在其他函数中函数内部的修改会反映在函数的外部
3实际参数和形式参数在不同的内存位置中创建实际参数和形式参数在相同的内存位置中创建

1.png

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想