cppreference:

[ static(optional) qualifiers(optional) expression(optional) ] attr-spec-seq(optional)(1)
[ qualifiers(optional) static(optional) expression(optional) ] attr-spec-seq(optional)(2)
expression-any expression other than comma operator, designates the number of elements in the array
qualifiers-any combination of constrestrict, or volatile qualifiers, only allowed in function parameter lists; this qualifies the pointer type to which this array parameter is transformed

In function parameter lists, additional syntax elements are allowed within the array declarators: the keyword static and qualifiers, which may appear in any order before the size expression (they may also appear even when the size expression is omitted).

In each function call to a function where an array parameter uses the keyword static between [ and ], the value of the actual parameter must be a valid pointer to the first element of an array with at least as many elements as specified by expression:

If qualifiers are present, they qualify the pointer type to which the array parameter type is transformed


They are also useful for C++ and improve C compatibility.