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