c++中,指针和引用的区别
时间: 2024-09-10 13:02:38 浏览: 66
c++中引用和指针的区别和联系
在C++中,指针和引用都是用来间接访问内存位置的工具,但它们之间存在一些关键区别:
1. **定义和初始化**[^1]:
- 指针变量需要通过`&`操作符获取某个变量的地址来初始化(如`int *p = &a;`),而引用则是在声明时直接绑定到已存在的变量(如`int &r = a;`)。
2. **修改性**[^2]:
- 指针可以改变其指向的对象(`p = &b;`),而一旦引用被绑定,就不能改变其关联的变量(除非重新赋值`r = b;`)。
3. **空指针与NULL**:
- 指针允许`nullptr`表示未初始化或空指针,而引用始终关联到某个具体的对象,不允许为空。
4. **解引用**:
- 使用`*`操作符解引用指针以访问存储的值,而对于引用,它本身就是对原始变量的别名,无需解引用。
5. **自增和自减**:
- 指针的自增(`++p`)会增加指针本身的位置,而引用的自增(`++r`)则是对应的变量自增(`a++`)。
举例说明:
```cpp
int a = 123;
int *p = &a; // p指向a
int &r = a; // r是a的引用
// 指针修改
p++; // p现在指向a后面的内存
*a = 456; // 通过指针修改a的值
// 引用无此操作
// r++; 或者 r = ++a; 是不合法的,因为r不能更改
cout << "Value at *p: " << *p << endl; // 输出456
cout << "Value of r: " << r << endl; // 输出123(不会自动递增)
```
阅读全文