C:无法使用void*类型的右值初始化变量

use*_*185 9 c pointers variable-initialization

我有以下代码:

int *numberArray = calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么会收到以下错误.

Cannot initialize a variable of type 'int *' with an rvalue of type 'void *'`.
Run Code Online (Sandbox Code Playgroud)

谢谢.

R S*_*ahu 19

编译器的错误消息非常清楚.

返回值callocvoid*.您将它分配给类型的变量int*.

对于C程序,这是可以的,但不适用于C++程序.

您可以将该行更改为

int* numberArray = (int*)calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

但是,更好的选择是使用new运算符来分配内存.毕竟,您正在使用C++.

int* numberArray = new int[n];
Run Code Online (Sandbox Code Playgroud)