Firebase: при обработке запроса произошла неизвестная ошибка. Попробуйте еще раз.

@Bo Persson правильно заявляет в своем замечательном ответе здесь :

====================== ====================================

При передаче массива в качестве параметра этот

void arraytest(int a[])

означает то же, что и

void arraytest(int *a)

================================ ==========================

Однако позвольте мне также добавить, что это:

означает то же самое, f3]

, что означает точно такое же, как

void arraytest(int a[1])

, что означает точно такое же, как

void arraytest(int a[2])

, что означает точно такое же, как

void arraytest(int a[1000])

и т. д.

На самом деле значение «размер» внутри параметра массива здесь, по-видимому, предназначено только для эстетической / самостоятельной документации и может быть любым целым положительным (size_t типом Я думаю) вы хотите!

На практике, однако, вы должны использовать его для указания минимального размера массива, который вы ожидаете от функции, чтобы при написании кода вам легко отслеживать и проверять. Стандарт MISRA-C-2012 ( купит / загрузит 236-страничный PDF-версия стандарта для £ 15,00 здесь ) до тех пор, пока не будет указано:

Правило 17.5. Аргумент функции, соответствующий параметру, объявленному для типа массива, должен иметь соответствующее количество элементов.

blockquote>

...

Если параметр объявлен как массив с указанным размером, соответствующий аргумент в каждом вызове функции должен указывать на объект, у которого есть как минимум столько же элементов, сколько массив.

blockquote>

...

Использование декларатора массива для параметра функции более четко определяет интерфейс функции, чем использование указателя. Минимальное количество элементов, ожидаемых функцией, явно указано, тогда как это невозможно с указателем. [emphasis added]

blockquote>

Другими словами, они рекомендуют использовать формат явного размера, даже если стандарт C его технически не применяет - он по крайней мере помогает вам разъяснить как разработчик, так и другим, используя код, какой размер массива ожидает функция.

25
задан Pre_hacker 30 March 2017 в 10:24
поделиться