引用的概念
其实我自己的认为是,引用就是给变量起了一个别名,一个外号。
它最重要的用处的 传参!!!!
1 作为函数参数
引用常用于函数参数,称为按引用传递,可以避免复制数据,提高性能,尤其是在传递大型对象时。这也确保了函数内对参数的修改会直接作用于实参。
void increment(int &num) { // 按引用传递
num++;
}
int main() {
int a = 10;
increment(a); // 修改 a 的值
std::cout << a << std::endl; // 输出 11
return 0;
}
2 作为函数返回值
可以通过引用返回函数中的局部对象(一般是全局或静态对象)或引用传入的参数,避免复制,提高效率。需要注意的是,不能返回局部对象的引用,因为函数结束后局部对象会被销毁。
`int& getElement(int arr[], int index) {
return arr[index]; // 返回数组元素的引用
}
int main() {
int arr[3] = {1, 2, 3};
getElement(arr, 1) = 10; // 修改 arr[1] 的值
std::cout << arr[1] << std::endl; // 输出 10
return 0;
}
3 常量引用(const 引用)
如果只需要读取对象的值,而不修改它,可以使用 const 引用。这在传递大型对象时非常有用,因为它可以避免不必要的拷贝。
void print(const int &num) { // 常量引用
std::cout << num << std::endl;
}
int main() {
int a = 10;
print(a); // 按常量引用传递,不会修改 a
return 0;
}
`
#include <string>
#include <iostream>
#include <memory>
#include<assert.h>
using namespace std;
void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
void swap1(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a = 3;
int b = 4;
cout << a << " " << b << endl;
swap(a, b);
cout << a << " " << b << endl;
swap1(&a, &b);
cout << a << " " << b;
return 0;
}
其实我现在有个疑问
有了指针为什么还需要引用
C语言只有指针,Java只有引用,C++既有指针又有引用
为了支持函数的运算符重载!!!
有了引用为什么还需要指针
为了兼容C语言,所以必须要有指针