参数传递的方式:值传递:创建参数的副本;引用传递:指向原始数据的指针;指针传递:需要手动解引用指针访问原始数据。
C++ 函数中引用与指针传递
在 C++ 中传递参数的方式有两种:值传递和引用传递。值传递是创建参数的副本,而引用传递是指向原始数据的指针。
值传递
立即学习“C++免费学习笔记(深入)”;
值传递是最简单的传递方式:
void foo(int value) {
value++; // 修改的是 value 的副本
}
int main() {
int x = 5;
foo(x); // 传递 x 的副本
cout << x << endl; // 仍为 5,因为它是一个副本
}
引用传递
引用传递使用引用符号 (&),它创建一个指向原始数据的别名:
void foo(int& value) {
value++; // 修改的是原始数据
}
int main() {
int x = 5;
foo(x); // 传递 x 的引用
cout << x << endl; // 6,因为原始数据已被修改
}
指针传递
指针传递与引用传递类似,但它需要手动解引用指针来访问原始数据:
void foo(int* value) {
*value++; // 修改的是原始数据
}
int main() {
int x = 5;
foo(&x); // 传递 x 的地址
cout << x << endl; // 6,因为原始数据已被修改
}
实战案例
以下是一个使用引用传递和指针传递的实际示例:
#include <iostream>
using namespace std;
// 通过引用传递,返回字符串长度
size_t strlen(const char* str) {
return strlen(str); // 利用 C 库函数
}
// 通过指针传递,返回字符串最后一个字符
char lastchar(const char* str) {
return *str + strlen(str) - 1; // 访问原始字符串的最后一个字符
}
int main() {
string s = "Hello";
cout << "String length: " << strlen(s.c_str()) << endl;
cout << "Last character: " << lastchar(s.c_str()) << endl;
}
输出:
String length: 5
Last character: o