Actually answer can be both C or D.It depends on the architecture.If the machine is byte addressable then option D is correct.
For instance, say int takes 4 bytes and char takes 8 bytes.If it is byte addressable then the memory layout will be somewhat shown in the figure.If we are using for e.g decimal addressing and lets take the base address as 1000,then we need displacement of 51 to access student.grade.
Now if the machine is word addressable and say 1 word=100*4(for marks array)+8(for grade)+4(for cnumber)=412bytes .Then the picture will look something like..
In this case we dont need displacement...it can be done with direct addressing mode only.