1.定义方式不同:
引用是变量的别名,在定义时必须初始化,并且不能改变引用对应的变量。
指针是一个存储变量地址的变量,在定义时不需要初始化,可以随时指向其他变量。
2.访问方式不同:
引用直接访问变量,无需解引用。
指针需要解引用操作符(*
)来访问变量。
3.内存占用不同:
引用不占用额外内存空间。
指针需要占用一个指针变量的内存空间来存储地址。
#include <iostream>
int main() {
// 引用示例
int x = 10;
int& ref_x = x; // ref_x是x的别名
std::cout << "x: " << x << ", ref_x: " << ref_x << std::endl; // 输出x: 10, ref_x: 10
ref_x = 20; // 通过引用修改x的值
std::cout << "x: " << x << ", ref_x: " << ref_x << std::endl; // 输出x: 20, ref_x: 20
// 指针示例
int y = 30;
int* ptr_y = &y; // ptr_y指向y的地址
std::cout << "y: " << y << ", *ptr_y: " << *ptr_y << std::endl; // 输出y: 30, *ptr_y: 30
*ptr_y = 40; // 通过指针修改y的值
std::cout << "y: " << y << ", *ptr_y: " << *ptr_y << std::endl; // 输出y: 40, *ptr_y: 40
return 0;
}
在这个例子中,我们首先定义了一个整型变量x
,并通过引用ref_x
来访问它。我们可以看到,通过ref_x
修改x
的值,x
和ref_x
的值会同步更新。
接下来,我们定义了另一个整型变量y
,并通过指针ptr_y
来访问它。我们可以看到,通过解引用ptr_y
来修改y
的值,y
和*ptr_y
的值也会同步更新。