Until now the address operator only worked with simple variables. Now it works with arbitrary expressions (that are lvalues or function names). So for example this now works: struct S { int a[10]}; int f(struct S* p) { return &p->a[3]; }