John C. answered 04/21/20
BS and MS in Comp Sci, 34 years experience, 3 yrs CS tutoring
I find that new students struggle to understand the concept of a reference to a variable as opposed to a variable. The level of indirection confuses them. One metaphor that has worked for me is to liken a pointer to the address of a house, and the variable to be the people inside the house. People "get" that concept; they know the house address is not the people, just as the people are not the address.
It also helps to draw pictures to illustrate the concept; i.e., draw a box (a variable) and another box (a pointer) that has the address of the box inside it. [Drawing pictures helps with all sort of CS topics; not everyone can visualize a concept simply from the verbal explanation.] Then introduce the notion of drawing arrows to represent pointers (it will be helpful when they learn about linked lists).
In explaining linked lists, another metaphor that worked for me was to explain an LL as like a bunch of elephants, each holding on to the tail of the elephant in front of them. Another metaphor is to say an LL is like a train. And of course it helps to draw a representation of the linked list.
When students learn about LL, they struggle with concepts such as iterating through a list, removing a list, adding an element in the middle. Pictures help a lot.