Option D is correct answer.
Given that x=1, z[0]=10 and z[1]=11
int *p=NULL;
p=&x;
*p=10;
By this code, they are accessing x and changing it’s value to 10. Therefore x=10 after the above code executed.
*(&z[0]+1) += 3;
$\text{ [ As per precedence rule, z[0], &z[0], &z[0]+1, *(&z[0]+1) and *(&z[0]+1) += 3; evaluated in the order ] }$
&z[0] --- address of z[0]
&z[0] + 1 ---- address of z[1] $\text{ [ because z[0] and z[1] are contiguously allocated in the memory ]}$
So, we can rewrite the above statement as *( address of z[1] ) += 3
which is nothing but z[1] += 3 ==> z[1] = z[1] + 3
Therefore z[1] = 14
Notice that, z[0] not changed.