添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

C++ void指针

C++ void指针教程

C++ 中, void 的意思就是 “无类型”,void 指针则为 “无类型指针”,void 指针可以指向 任何类型 的数据。所以 void 指针一般被称为通用指针或者泛指针,也可以叫做万能指针。

void指针使用

  • 在 C++ 中在任何时候都可以用 void 类型的指针来代替其他类型的指针,void 指针可以指向任何数据类型的变量。
  • 如果要通过 void 指针去获取它所指向的变量值时候,需要先将 void 指针强制类型转换成和变量名类型相匹配的数据类型指针后再进行操作。
  • 任何类型的指针都可以赋值给 void 指针,无需进行强制类型转换。
  • C++ void指针详解

    void *p

    我们使用 void * 定义了一个万能指针。

    void指针使用场景

  • 对函数参数的限定。
  • 对函数返回的限定。
  • void 指针也常用作函数指针。
  • void指针强制类型转换详解

    *((int*)pa

    我们将一个 void 类型的指针 pa,转换成了 int 类型的指针,并取其值。

    定义void指针

    void 指针可以指向任何数据

    #include <iostream> using namespace std; int main() cout << "嗨客网(www.haicoder.net)\n" << endl; int a = 1024; void *pa = &a; cout << "pa = " << pa << endl; return 0;

    程序运行后,控制台输出如下图所示:

    我们首先,定义了一个 int 类型的变量 a,接着,我们定义了一个 void 类型的指针,该指针用来保存了 int 类型的变量的地址,因此,我们可以看出,void 指针可以保存任何数据类型的地址。

    void指针不可以直接使用

    void 指针不可以直接使用,必须经过类型转换后才可以使用

    #include <iostream> using namespace std; int main() cout << "嗨客网(www.haicoder.net)\n" << endl; int a = 1024; void *pa = &a; cout << "pa = " << pa << " *pa = " << *pa << endl; return 0;

    程序运行后,控制台输出如下图所示:

    我们直接使用 *pa,打印了 void 指针指向的变量的值,我们发现程序报错,因为,void 指针不可以直接使用,必须经过 强制类型转换,现在,我们将程序修改如下:

    #include <iostream> using namespace std; int main() cout << "嗨客网(www.haicoder.net)\n" << endl; int a = 1024; void *pa = &a; cout << "pa = " << pa << " *pa = " << *((int*)pa) << endl; return 0;

    程序运行后,控制台输出如下图所示:

    这次,我们在打印的时候,将 void 指针强制类型转换成了 int 指针,最后,我们看到可以正确输出了 void 指针指向的值,因此,void 指针不可以直接使用,必须强制类型转换后才可以使用。

    任何指针都可以赋值给void指针

    任何指针无需强制类型转换,都可以赋值给 void 指针