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);
广告