在 c++++ 函数中,引用传递和指针传递的区别在于:引用传递:通过引用传递参数的地址,修改参数将在函数外可见,原始参数无法在函数内改变;指针传递:通过指针传递参数的地址,修改参数不会在函数外可见,原始参数可以在函数内改变。实战中,引用传递用于修改原始参数,指针传递用于返回新内存分配或处理大数据结构。
C++ 函数的引用和指针传递:区别与实战案例
简介
在 C++ 函数中传递参数时,有两种常见的方法:引用传递和指针传递。这两种方法在用法、语义和效率上都有所不同。
立即学习“C++免费学习笔记(深入)”;
引用传递
- 引用传递通过引用传递参数的地址。
- 参数在函数内外使用相同的内存空间,因此对参数的修改将在函数外可见。
- 原始参数无法在函数内改变。
代码示例:
#include <iostream>
void swapByReference(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 5, y = 10;
swapByReference(x, y);
std::cout << "x = " << x << ", y = " << y << std::endl;
return 0;
}
输出:
x = 10, y = 5
指针传递
- 指针传递通过指针传递参数的地址。
*参数在函数内外使用不同的内存空间,因此对参数的修改不会在函数外可见。
*原始参数可以在函数内改变。
代码示例:
#include <iostream>
void swapByPointer(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
swapByPointer(&x, &y);
std::cout << "x = " << x << ", y = " << y << std::endl;
return 0;
}
输出:
x = 5, y = 10
实战案例
在实际应用中,引用传递通常用于需要对原始参数进行修改的情况,而指针传递则用于需要返回新的内存分配或需要处理大数据结构的情况。
例如,在实现链表数据结构时,节点的引用通常通过指针传递,因为需要在不同的函数之间更新和访问节点。