* Used inside [] only to declare function prototypes. Its valid syntax. This is useful when you omit the parameter name from the prototype, for example below
int function(int, int [*]);
It tells the compiler that the second parameter is VLA and depends on the value of the first parameter. In the above example, this is not worth it. Take a look at a more useful example.
int function(int, int [][*]);
It is not possible to use VLA as a parameter in a function prototype, having unnamed parameters, without using * inside [] .
6.7.6 Declarators
Syntax
1 declarator:
[...]
direct-declarator [type-qualifier-list static assignment-expression]
direct-declarator [type-qualifier-list opt *]
direct-declarator (parameter-type-list)
direct-declarator (identifier-list opt )
haccks
source share