如果我在 c 中为数组分配内存,是否必须强制转换?

Do I have to cast if I malloc for an array in c?

只是一个简单的问题,我找不到以下问题:

double* array = (double*) malloc(ARRAY_SIZE * sizeof(double));

或者我可以

double* array = malloc(ARRAY_SIZE * sizeof(double));

有什么区别吗?

在 C 中,您不应该 转换,因为它可以隐藏某些细微的错误。在 C++ 中(尽管 body 中没有提及,但你的问题最初有那个标签),你 必须 进行转换。

我所说的 "subtle errors" 包括当您的整数和指针大小不同并且您没有为 malloc 包含 header 时的奇怪行为 - 在这种情况下,您可能会发现它假设它 returns 一个 int (在此过程中丢失信息),虽然编译器通常会警告这一点,但显式转换可能会阻止这种情况。