C lets you create a traffic jam of pointers all aiming at the same memory location. This isn’t a bug. It’s a feature. You can declare as many pointers as you want and have them all reference the exact same variable.
Consider this scenario. You have an integer i. You also have three pointers: p, q, and r. You set p to point to i. Then you set q to point to i. Finally, you set r to point to where p is pointing.
In this block, r points to the same thing p does. Which is i. The assignment operator copies the address from the right side to the left side. It doesn’t copy the value. It copies the location.
After execution, i has four names. i itself. *p. *q. And *r.
There is no limit to how many pointers can hold a single address. You can chain them. You can copy them. You can point them all at once.
Why does this matter? It matters because it changes how you think about memory. A pointer is just a label for a location. If multiple labels point to the same spot, they all see the same data. Change the data through *p. *q sees it too.
This flexibility is powerful. It’s also dangerous. One typo in a pointer assignment and you’re overwriting data you didn’t intend to touch. But for now, just understand that pointers are flexible. They don’t own memory. They just point to it. And multiple pointers can point to the same place without arguing.




















