您能解释++resultLen * sizeof(float)
的含义吗?
if (mas[i] > mas[i + 1])
{
result = (float*)realloc(result, ++resultLen * sizeof(float));
result[resultLen - 1] = mas[i];
}
答案 0 :(得分:1)
运算符 sizeof 返回您正在执行代码的系统上传入的参数类型的大小。通常浮点数为4个字节。
操作员++
将增加您的变量。如果它放在变量后面,变量将在它参与的算术运算之后递增。它放在变量之前,因此它在乘法之前递增。
所以在这里你要为你的“结果”数组重新分配内存空间,将其大小增加1(浮动)。
答案 1 :(得分:0)
这意味着:将resultLen
的值增加1,然后将resultLen
的新值乘以浮点数所使用的字节数。
答案 2 :(得分:0)
下面
result = (float*)realloc(result, ++resultLen * sizeof(float));
result
正在realloc
编辑。
++resultLen * sizeof(float)
与
相同(++resultLen) * sizeof(float)
因为operator precedence(++
的优先级高于*
)。首先递增resultLen
,然后将此值乘以sizeof(float)
。
malloc
/calloc
/realloc
。
答案 3 :(得分:0)
++ resultLen等同于(resultLen + 1)
所以等式变成了 (resultLen + 1)*的sizeof(浮点);
sizeof(float)通常为4,但依赖于操作系统和体系结构,假设为4。 这使: 4 * resultLen + 4。
HTH