p1 == p2, as shown by the printout, which means the two pointers have the same address, but why the values are different after *p1=20? When two pointers point to the same location, modification of one value should automatically update the value for the second pointer. Any misunderstanding?