我有一个函数,它接受一个数据块和块的大小以及一个函数指针作为参数。然后它迭代遍历数据并对数据块中的每个元素执行计算。 以下是我正在做的基本概述:
int myfunction(int* data, int size, int (*functionAsPointer)(int)){
//walking through the data and calculating something
for (int n = 0; n < size; n++){
data[n] = (*function)(data[n]);
}
}
我作为参数传递的函数看起来像这样:
int mycalculation(int input){
//doing some math with input
//...
return input;
}
这段代码运行正常,但现在我需要将一个额外的变量传递给我的函数指针。大致应该是这样的:
int mynewcalculation(int input, int someVariable){
//e.g.
input = input * someVariable;
//...
return input;
}
有没有一种优雅的方式来实现这个目标,同时保持我的整体设计思路?
void*
方法看起来更干净,并且容错性较低。 - Cascabel