在C

时间:2015-04-22 12:04:10

标签: c arrays

我需要将uint8_t数组中的元素复制到float数组中。

我写了一个简单的功能,立即浮现在我脑海中。

float *uint8_t_mas_to_float_mas(uint8_t *src, int size)
{
    float *dst = NULL;
    if (!src)
        return NULL;

    dst = (float*)calloc(size, sizeof(float));

    if (!dst)
        return NULL;

    for (int i = 0; i < size; i++)
        dst[i] = (float)src[i];

    return dst;
}

但我认为这不是有效的,不幸的是我无法想出其他的东西。

有人可以帮忙吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

你应该这样写(等价):

float *uint8_t_mas_to_float_mas(uint8_t *src, int size)
{
    if (!src)
        return NULL;

    float *dst = (float*)malloc(size*sizeof(float));

    if (!dst)
        return NULL;

    for (int i = 0; i < size; i++)
        dst[i] = (float)src[i];

    return dst;
}

这完全没问题。让优化器完成它的工作。瓶颈是malloc调用 - 所以你不需要在这里做任何事情,除非你要复制数百万个元素。