In C, you can have multiple pointers all aiming at the exact same memory location. It is not a bug. It is a feature.
You might declare three integer pointers: p, q, and r. Then you can set them all to point to the same integer variable i.
See what happens here. p gets the address of i. q also gets the address of i. r gets whatever p is holding. That is the address of i.
After this code runs, you have a weird situation. i now has four names. You can access it using i, *p, *q, or *r. They all refer to the same spot in RAM.
How Pointer Assignment Works
When you assign one pointer to another, you are not copying the value they point to. You are copying the address.
r = p does not copy the integer i. It copies the memory address stored in p. Since p holds the address of i, r now also holds the address of i.
There is no limit to how many pointers can share one address. You could have ten pointers. Or one hundred. They all just point to the same thing.
Why This Matters
This behavior changes how you think about data. A single variable in memory can have many aliases. If you change the value through one pointer, every other pointer sees the change.
Now i is 10. *q is 10. *r is 10. They are all looking at the same data.
This is useful. It allows you to pass references to functions without copying large structures. It lets different parts of your code operate on the same data. But it also means you have to be careful. Changing one pointer can affect others.
Common Misconceptions
Some beginners think assigning pointers copies the data. It does not. It copies the address.
Others wonder if there is a limit. There is none. The language allows you to create as many pointers as you need. The compiler does not stop you.
The Bottom Line
Multiple pointers can point to the same address. This is standard C behavior. You can assign pointers to each other. The address is copied, not the value. The variable remains the same. The names just multiply.
“There is no limit on the number of pointers that can hold (and therefore point to) the same address.”
This flexibility is powerful. It requires discipline. But it is fundamental to how C works. If you understand this, you understand a core concept of memory management in C.


























