ANSI-C грамматика - объявления массива, такие как [*] и др.
ANSI C грамматика от-ссылка на сайт- дайте мне следующие правила для объявлений массива:
(1) | direct_declarator '[' type_qualifier_list assignment_expression ']'
(2) | direct_declarator '[' type_qualifier_list ']'
(3) | direct_declarator '[' assignment_expression ']'
(4) | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']'
(5) | direct_declarator '[' type_qualifier_list STATIC assignment_expression ']'
(6) | direct_declarator '[' type_qualifier_list '*' ']'
(7) | direct_declarator '[' '*' ']'
(8) | direct_declarator '[' ']'
Теперь у меня есть несколько вопросов по этому поводу:
Могу ли я использовать (1) - (6) кроме (3) только в C99?Для чего нужны (4) и (5)? Ключевое слово «статический» смущает меня.Где использовать (6)?В чем разница между следующими двумя прототипами функций:
void foo(int [*]);
а также
void foo(int []);
Спасибо.