如何将const数组或变量数组传递给C中的函数?

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此原型.

  • 不 - "const Foo*x"的意思是:`*x`是一个`const Foo`.要将参数声明为无法更改的指针(这不太有用),您必须编写`Foo*const x` :) (7认同)