gcc: Subscripting

1 
1 6.22 Non-Lvalue Arrays May Have Subscripts
1 ==========================================
1 
1 In ISO C99, arrays that are not lvalues still decay to pointers, and may
1 be subscripted, although they may not be modified or used after the next
1 sequence point and the unary '&' operator may not be applied to them.
1 As an extension, GNU C allows such arrays to be subscripted in C90 mode,
1 though otherwise they do not decay to pointers outside C99 mode.  For
1 example, this is valid in GNU C though not valid in C90:
1 
1      struct foo {int a[4];};
1 
1      struct foo f();
1 
1      bar (int index)
1      {
1        return f().a[index];
1      }
1