指针和引用之间如何转换?
时间: 2024-01-21 16:18:13 浏览: 44
指针和引用是两种不同的概念,但它们之间可以相互转换。在 C++ 中,可以通过以下方式将指针转换为引用:
1. 将指针解引用,然后再取地址符(&)获取其地址,这样就可以得到一个指向该指针所指向的对象的引用。
```c++
int* ptr = new int(10);
int& ref = *ptr; // 将指针解引用,并取其地址,得到一个引用
```
2. 使用类型转换运算符(static_cast)将指针转换为引用。
```c++
int* ptr = new int(10);
int& ref = static_cast<int&>(*ptr); // 使用 static_cast 进行类型转换
```
同样地,可以通过以下方式将引用转换为指针:
1. 使用取地址符(&)获取引用的地址,得到一个指向该引用所引用的对象的指针。
```c++
int num = 10;
int& ref = num;
int* ptr = &ref; // 使用取地址符获取引用的地址,得到一个指针
```
2. 使用类型转换运算符(reinterpret_cast)将引用转换为指针。
```c++
int num = 10;
int& ref = num;
int* ptr = reinterpret_cast<int*>(&ref); // 使用 reinterpret_cast 进行类型转换
```
需要注意的是,引用转换为指针时,应该使用 reinterpret_cast 而不是 static_cast,因为 reinterpret_cast 可以将引用转换为任何类型的指针,而 static_cast 只能用于相关类型之间的转换。