C/C++中的指针(pointer)和引用(reference)都是用来处理变量间的关系和交互的工具,但是它们有一些不同点。
指针(pointer)是一个变量,存储着另一个变量的内存地址。可以通过解除引用运算符 * 访问该内存地址所存储的值。例如:
int x = 10;
int *p = &x;
std::cout << *p << std::endl; // 输出 10引用(reference)是一个别名,表示已存在变量的另一个名称。可以直接访问引用变量的值,并且修改引用变量会直接影响到实际变量。例如:
int x = 10;
int &r = x;
std::cout << r << std::endl; // 输出 10指针通常用于动态内存分配、数组、字符串、函数参数传递等方面。例如:
int *p = new int[10];
char *str = "hello";
void swap(int *a, int *b);引用通常用于函数参数传递、运算符重载、类成员变量等方面。例如:
void foo(int &x);
class MyVector {
private:
double &data;
public:
MyVector(double &value) : data(value) {}
};指针和引用都是 C/C++ 中非常重要的概念,可以方便地处理对象间的关系和交互。指针可以重新赋值并指向其他对象,具有一定灵活性,通常用于动态内存分配、数组、字符串、函数参数传递等方面;引用不能重新赋值,但是定义和使用更为简便,通常用于函数参数传递、运算符重载、类成员变量等方面。在实际开发中,需要灵活使用指针和引用,根据实际情况选择合适的方法来解决问题。