我有一个简单的函数Bar
,它使用数据集中的一组值,这些数据集以数据结构数组的形式传入。数据可以来自两个来源:默认值的常量初始化数组或动态更新的缓存。
调用函数确定使用哪些数据,并应传递给Bar
。
Bar
不需要编辑任何数据,实际上也不应该这样做。我应该如何声明Bar
的数据参数,以便我可以从任何一组提供数据?
union Foo
{
long _long;
int _int;
}
static const Foo DEFAULTS[8] = {1,10,100,1000,10000,100000,1000000,10000000};
static Foo Cache[8] = {0};
void Bar(Foo* dataSet, int len);//example function prototype
注意,这是C,而不是C ++,如果这有所不同;
修改
哦,还有一件事。当我使用示例原型时,我得到一个类型限定符不匹配警告,(因为我将一个可变引用传递给const数组?)。我有什么需要改变的?
答案 0 :(得分:9)
你想:
void Bar(const Foo *dataSet, int len);
参数声明const Foo *x
表示:
x
是指向Foo
的指针 保证不会改变。
您可以使用此原型将非const指针传递到Bar
。
答案 1 :(得分:0)
正如您所做的那样 - 该函数采用指向数据的指针(如果不需要更改,则为const)
如果使用malloc分配数据,则传递指针;如果是静态数组,则传递第一个元素。