Cod*_*ile 7 c arrays pointers const immutability
我有一个简单的函数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
Run Code Online (Sandbox Code Playgroud)
注意,这是C,而不是C++,如果这有所不同;
编辑
哦,还有一件事.当我使用示例原型时,我得到一个类型限定符不匹配警告,(因为我将一个可变引用传递给const数组?).我需要改变什么呢?
psm*_*ars 10
你要:
void Bar(const Foo *dataSet, int len);
Run Code Online (Sandbox Code Playgroud)
参数声明const Foo *x
意味着:
x
是指向Foo
我保证不会改变的指针.
您将能够将非const指针传递给Bar
此原型.