"void *"在 C 和 C++ 中有何不同?

cc++server side programmingprogramming

在本节中,我们将了解 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);

相关文章