Address of variables var2 and var3 are different.
after main() {
line no 3. var2 and var3, both pointing to same address, i,e &var1.
line no 4. *var2++ = *var3++
*a++ can be written as:
*a;
a++;
here both * and ++ are unary operator precedence same but associaitvity right to left.
so (*(var2++)) = (*(var3++)), assignment has the least precedence among them (right to left), but increment is post, so variables' value (which is &var1) will increment after evaluation of expression.
It is just assigning 35 (*var3) to *var2 (which is var1), which was already 35, and they are incrementing var2 and var3 by 1×size_of_data_type
line no 5. var1++ ; just increment 35 to 36.
Answer should be 36, var2, var3
= 36, &var1, &var1
Whatever the address of var1, it will be printed and both are equal.