我正在用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);