C和C ++中的“ void *”有何区别?

在本节中,我们将看到C中的void指针和C ++中的void指针之间有什么区别。它们都是空指针,但是在C中,可以将空指针分配给任何指针类型,但是在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);

以上是 C和C ++中的“ void *”有何区别? 的全部内容, 来源链接: utcz.com/z/327249.html

回到顶部