Let's start with the first case: declaring a pointer.
I told you that a pointer was a variable
and so we can declare a pointer.
What does it mean to declare a pointer?
It just means that we are adding a page to our address book.
But careful, adding a new page
does not mean that there is an address written on it.
Adding a new page is just adding a new page
without specifying what will be written on it.
There will likely be something written on it, but we don't know how to interpret it.
Second point: assigning a pointer.
What does it mean to assign a pointer?
It means giving an address,
writing an address on the page of our address book.
We sometimes speak of allocating a pointer.
What does it mean to allocate a pointer?
Allocating a pointer means, to go buy some land somewhere.
It is allocating memory and building a house in it.
That is, putting a value there and getting back the address of this house
to copy it onto the page of our address book.
That's what allocating a pointer means.
But note that here -- this is a common mistake --
the pointer is neither the land nor the house.
Those are two completely different things.
The pointer is just the page of the address book
which contains the address of the house.
It is not the house itself.
In other words, the pointer does not equal the value pointed by it.
Those are two completely different things.