The pointer is a variable like any other, but it stores a memory address that references another memory location where the content is.
Examples:
in C:
int * a = malloc(10 * sizeof *a);
in C ++:
int * a = new int[10];
The variable a is a pointer that stores the memory address for the 1st position of the vector. The rest of the positions are accessed through basic arithmetic, see this answer: link
Pointers have 4 bytes in a 32-bit architecture and 8 bytes in a 64-bit architecture. Note that they will always be the same size, no matter what type of variable they point to. So a pointer to char is the same size as a pointer to double.
Considering a 32-bit architecture, in the above example, the variable a is a 4-byte pointer pointing to a vector that uses 10 * 4 = 40 bytes of RAM (a < int in a 32-bit architecture also uses 4 bytes of memory to be represented).
Update
Even when you just declare the pointer (without pointing it to any memory address), as below:
int * a;
The same 4 bytes of RAM are used. However, in this case, the vector is pointing to a random memory address.
The same thing happens if you do this:
int * a = NULL;
however, in this case, the vector is pointing to address 0.
Anyway, the 4 bytes of memory are spent anyway.