I was wondering that I have read everywhere, pointers dont occupy space in memory because they store the address of a variable. But, for them to store the address, the storing would require some space in the first place. Correct me if I am wrong, I am quite confused.

Will

```
int *ptr;

```

take space in memory when we declare it?

Like,

```
int num;

```

will take 2 bytes. or not?

If not, how will the pointer "store" the address without having any space to store it?