Let’s try to explain *x = *y; without using the word “dereference”:
*xrepresents the integer object pointed to by x. As it is the left operand of the assignment, it means that this integer object is going to be updated.*yrepresents the integer object pointed to by y. As it is the right operand of the assignment, it means that the content of the integer object (i.e. its value) is going to be used.*x=*yupdates the integer object pointed to by x with the integer object pointed to by y.
Note: To clearly distinguish pointers from other types in the code, I suggest you to change naming as follows, using a prefix like p_ for pointer variables for example:
1 void swap (int* p_x, int* p_y){
2 int temp = *p_x;
3 *p_x = *p_y;
4 *p_y = temp;
5 }
6
7 int x,y;
8 x = 1;
9 y = 2;
10 swap(&x,&y)
4
solved Trying to understand a function to swap two int values