C++ 指针与引用的深入解析
1. 无指定类型对象的指针使用
在使用无指定类型对象的指针(即 void 指针)时,程序员需要时刻牢记指针所指向的内容。因为没有与指针关联的类型,编译器无法为我们完成这项工作。当需要解引用 void 指针时,程序员要正确记住涉及的最终类型,并对该指针进行适当的类型转换。
1.1 创建 void 指针
可以使用 void * 来指定指向无指定类型对象的指针。 void 指针可以指向任何类型的对象。为了解引用 void * 所指向的实际内存,必须使用显式类型转换。在 C++ 中,将 void * 所指向的内存分配给已知类型的指针变量时,也必须使用显式类型转换。程序员有责任确保在进行赋值之前,解引用的数据类型相同。如果程序员判断错误,代码中可能会出现难以发现的指针错误。
以下是一个示例代码:
#include <iostream>
using std::cout;
using std::endl;
int main()
{
void *unspecified = nullptr; // 可以指向任何数据类型
int *x = nullptr;
unspecified = new int; // void 指针现在指向一个 int
// 在解引用之前,必须将 void * 转换为 int *
*(st
C++指针与引用的深入解析
超级会员免费看
订阅专栏 解锁全文
1176

被折叠的 条评论
为什么被折叠?



