gcc.info: Subscripting

Go forward to Pointer Arith
Go backward to Macro Varargs
Go up to C Extensions
Go to the top op gcc

Non-Lvalue Arrays May Have Subscripts

   Subscripting is allowed on arrays that are not lvalues, even though
the unary `&' operator is not.  For example, this is valid in GNU C
though not valid in other C dialects:
     struct foo {int a[4];};
     struct foo f();
     bar (int index)
     {
       return f().a[index];
     }