Как я могу передать массив константы или переменный массив к функции в C?

У меня есть простая функция 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++, если это имеет значение;

Править
О, еще одна вещь. Когда я использую прототип в качестве примера, я получаю предупреждение несоответствия спецификатора типа, (потому что я передаю изменяемую ссылку на массив константы?). Что я должен изменить для этого?

7
задан CodeFusionMobile 15 June 2010 в 15:21
поделиться

2 ответа

Вы хотите:

void Bar(const Foo *dataSet, int len);

Объявление параметра const Foo * x означает:

x - указатель на Foo что я обещаю не менять.

С помощью этого прототипа вы сможете передать неконстантный указатель в Bar .

10
ответ дан 7 December 2019 в 01:16
поделиться

Как и вы, функция принимает указатель на данные (const, если его не нужно изменять)

Затем либо передайте указатель, если вы назначили данные с помощью malloc или первый элемент, если это статический массив.

0
ответ дан 7 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: