如果我在 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
(在此过程中丢失信息),虽然编译器通常会警告这一点,但显式转换可能会阻止这种情况。
只是一个简单的问题,我找不到以下问题:
double* array = (double*) malloc(ARRAY_SIZE * sizeof(double));
或者我可以
double* array = malloc(ARRAY_SIZE * sizeof(double));
有什么区别吗?
在 C 中,您不应该 转换,因为它可以隐藏某些细微的错误。在 C++ 中(尽管 body 中没有提及,但你的问题最初有那个标签),你 必须 进行转换。
我所说的 "subtle errors" 包括当您的整数和指针大小不同并且您没有为 malloc
包含 header 时的奇怪行为 - 在这种情况下,您可能会发现它假设它 returns 一个 int
(在此过程中丢失信息),虽然编译器通常会警告这一点,但显式转换可能会阻止这种情况。