在C++中,引用和指针是两种不同的机制,用于访问和操作对象。它们有以下主要区别:
int x = 10;
int& ref = x; // 引用必须在定义时初始化
int* ptr = &x; // 指针可以在定义时初始化
语法和使用:
*
来访问指向的对象。int y = 20;
ref = y; // 直接赋值,改变引用的对象
*ptr = y; // 解引用后赋值,改变指针指向的对象
空值:
nullptr
,必须始终引用一个有效的对象。nullptr
,表示不指向任何对象。int* ptr = nullptr; // 指针可以为 nullptr
// int& ref = nullptr; // 错误,引用不能为 nullptr
重新绑定:
int z = 30;
ref = z; // 改变引用的对象,实际上是改变 x 的值
ptr = &z; // 指针重新指向另一个对象
void modify(int& ref) {
ref = 40;
}
void modify(int* ptr) {
*ptr = 40;
}
int main() {
int a = 10;
modify(a); // 通过引用传递
modify(&a); // 通过指针传递
return 0;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。