PREV UP NEXT Using and Porting GNU CC

5.15: 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];
}