(int *)calloc和calloc之间的区别?

时间:2015-03-22 17:05:14

标签: c pointers dynamic allocation

有什么区别:

int *array;
array = (int*) calloc(5, sizeof(int));

int *array;
array = calloc(5, sizeof(int));

我不明白。 两个样本都有效。 在大学里,教授解释了为什么你需要在calloc之前使用(int *),但我没有得到它。

在课程中有一个像这样的代码示例:

struct data{
   int number;
   char *name;
};
typedef struct data student;

int main(){
    student **list;
    list = (student*) calloc(10, sizeof(student*));

    //Create structures dynamic in list
    ....

    return 0;
}

我希望有人可以向我解释。 谢谢。

1 个答案:

答案 0 :(得分:0)

不同之处在于,首先导致约束违规,而第二个则不然。 calloc的返回类型为void *,因此无需强制转换。

另请阅读:Do I cast the result of malloc?