C 和 C++ 中的“void *”有什么不同?


在本节中,我们将了解 C 中的 void 指针与 C++ 中的 void 指针之间的区别。它们都是 void 指针,但在 C 中,void 指针可以分配给任何指针类型,但在 C++ 中,我们不能这样做。在 C++ 中,我们必须明确类型转换才能进行赋值。

在以下示例中,当我们在 C 中编写一些代码时,这些行可以执行。

void *p;
int *int_ptr = p;

这在 C 中运行良好。现在,如果我们使用 malloc() 分配一些内存空间,我们可以使用显式类型转换,但如果不执行此操作,也没有关系。malloc() 函数返回 void 指针。

int *int_ptr = malloc(sizeof(int) * 10);

这里,返回的 void 指针隐式转换为整数类型指针。

现在,如果我们想在 C 和 C++ 中运行同一个程序,我们应该显式类型转换指针。

void *p;
int *int_ptr = (int *) p;
int *arr_ptr = (int *) malloc(sizeof(int) * 10);

更新于: 2019 年 7 月 30 日

494 人查看

开启你的 职业生涯

完成课程即可获得认证

开始吧
广告