Its is actually very simple about what the code is doing....
Case 1 : int size is 4
in this case the line t=(p+=sizeof(int))[-1]; willextract the last sring in the array (refer to pointer arithmetic here)(because of [-1] its "gh"
if its [-2] it will be "ef" and so on..
Case 1 : int size is 2
in this case the line t=(p+=sizeof(int))[-1]; will extract the last sring in the array (refer to pointer arithmetic here)
so it will print "cd"
if its [-2] it will print "ab"