我正在用C编写一个算法,它将指向无符号整数数组的指针作为输入进行某种过滤,并将结果返回给指针数组。我做到了:

static void Filtering(Inst_t *psStruct, uint8 *arraypointer)
{
    uint8 *arrayFilter;
    uint32 i, n = 0, uCount;
    uCount = psStruct->uCount;

    for (i = 0; i < uCount; i++)
    {
       arraypointer[i]  = (arraypointer[i] + arraypointer[i - 1] +  arraypointer[i + 1])/3;
    }
}

这样做会覆盖数据。但我不想这样。因此,要对指针指向的数组数据进行本地复制,然后使用它计算平均值并将计算值传回。
我正在考虑分配一个*arraypointer大小的数组,并用指针数组值初始化它,然后使用这个本地副本。理论上,这对我来说是有意义的,但不确定这是否是最好的方法。
我们非常感谢任何解决此问题的指针/代码。请帮忙。
提前谢谢。

最佳答案

如果不想修改数据,那么为什么让函数这么做?与其想方设法回避自己的程序设计,不如改变函数的定义并以不同的方式实现它。

static void Filtering (Inst_t *psStruct,
                       const uint8_t* source,
                       uint8_t* result)

然后在呼叫者中:
uint8_t* filtered_buf = malloc (sizeof(buf));

Filtering(some_struct, buf, filtered_buf);

free(filtered_buf);

10-06 09:39