Первое объявление сообщает компилятору, что someArray
имеет не менее 100 элементов. Это можно использовать для оптимизации. Например, это также означает, что someArray
никогда не имеет значения NULL.
Обратите внимание, что стандарт C не требует, чтобы компилятор диагностировал, когда вызов функции не отвечает этим требованиям (т. Е. Это бесшумное неопределенное поведение ).
Второе объявление просто объявляет someArray
(а не элементы someArray
!) как const, т. е. вы не можете писать someArray=someOtherArray
. Это то же самое, что и параметр char * const someArray
.
Этот синтаксис можно использовать только в самом внутреннем []
объявителя массива в списке параметров функции, это не имеет смысла в других контекстах.
Стандартный текст, который охватывает оба вышеуказанных случая, находится в C11 6.7.6.3/7 (был в формате 6.7.5.3/7 в C99):
Объявление параметра «массив типа» должен быть скорректирован на «квалифицированный указатель на тип», где квалификаторы типа (если они есть) являются теми, которые указаны в
blockquote>[
и]
для вывода типа массива. Если ключевое слово static также появляется внутри[
и]
вывода типа массива, то для каждого вызова функции значение соответствующего фактического аргумента должно обеспечивать доступ к первому элементу массива, по меньшей мере, как многие элементы, указанные выражением размера.
Это - BOM (Порядок байтов Mark), Вы видите.
В Вашем редакторе должен быть способ вызвать сохранение без BOM, который удалит проблему.
Найденный им, файл-> кодирующий-> UTF8 с BOM, измененным на к UTF :-)
Я должен ahve, который спрашивают прежде wasing время, пытаясь понять это :-)
На всякий случай вот список байтов для BOM
Encoding Representation (hexadecimal) UTF-8 EF BB BF UTF-16 (BE) FE FF UTF-16 (LE) FF FE UTF-32 (BE) 00 00 FE FF UTF-32 (LE) FF FE 00 00 UTF-7 2B 2F 76, and one of the following bytes: [ 38 | 39 | 2B | 2F ]† UTF-1 F7 64 4C UTF-EBCDIC DD 73 66 73 SCSU 0E FE FF BOCU-1 FB EE 28 optionally followed by FF†