[video](https://www.youtube.com/watch?v=iChalAKXffs)
<iframe width="560" height="315" src="https://www.youtube.com/embed/iChalAKXffs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<!-- Generated by <a href="https://www.yinote.co/#installation">YiNote</a> -->
<!-- # [What Are Pointers? (C++) - YouTube](https://www.youtube.com/) -->
<!-- ## [1:17](https://www.youtube.com/?yinotetimestamp=77) -->
A pointer is a variable that holds a memory address.
<!-- ## [1:42](https://www.youtube.com/?yinotetimestamp=102) -->
Address = location in machine's RAM
<!-- ## [3:04](https://www.youtube.com/?yinotetimestamp=184) -->
Without pointers, we're using "direct address", which turns the variable name into an address in the memory that we can then look up.
<!-- ## [4:45](https://www.youtube.com/?yinotetimestamp=285) -->
pointer b = &a
means that we're taking the address of a and storing that as the value of b.
<!-- ## [5:16](https://www.youtube.com/?yinotetimestamp=316) -->
int c = *b
then means that c will be the value of the address of a, or the value of a.
* gets the value. & gets the address.
<!-- ## [6:46](https://www.youtube.com/?yinotetimestamp=406) -->
We've said "pointer b", but there is often no variable type called pointer. Instead, we should actually use the type of the variable whose address we're pointing to.
So instead of `pointer b`, it would be `int* b` or `int *b` to say that we're pointing to the address of a variable whose type is int.