Tengo una función simple Bar
que utiliza un conjunto de valores de un conjunto de datos que se transfiere en forma de una matriz de estructuras de datos. Los datos pueden provenir de dos fuentes: una matriz inicializada constante de valores predeterminados o una memoria caché actualizada dinámicamente.¿Cómo puedo pasar una matriz de const o una matriz variable a una función en C?
La función de llamada determina qué datos se utilizan y se deben pasar a Bar
. Bar
no necesita editar ninguno de los datos y, de hecho, nunca debería hacerlo. ¿Cómo debo declarar el parámetro de datos Bar
para poder proporcionar datos de cualquiera de los conjuntos?
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
Nota, esto es C, NO C++ si eso hace la diferencia;
Edición
Ah, una cosa más. Cuando uso el prototipo de ejemplo obtengo una advertencia de discrepancia de calificador de tipo, (porque estoy pasando una referencia mutable a una matriz de const?). ¿Qué tengo que cambiar por eso?
1, sólo porque me alegro todavía hay algunas personas que no etiquetar sus preguntas 'C/C++' y marcan la diferencia entre los dos: D – ereOn