Because both programs are running in their own virtual address space. Your program sees virtual addresses. Underneath the OS is allocating different physical memory pages for both programs.
Don't bother. It isn't worth the grief to override the OS and security protocols and hardware layers. [edit] Also, the physical address can change while your program is running, thanks to paging.[/edit]
Find a method of IPC instead.
Option 1: You might find a file mapping to be most convenient. Google "msdn CreateFileMapping" to learn more. (*Nix geeks google "man mmap".)
Option 2: Use TCP/IP protocols to talk to each other. This takes a little effort, but it isn't difficult --particularly if you are already familiar with the topic.
Option 3: Use pipes. This is a little tricky to set up right, but it pays for the effort in spades because communication becomes no more difficult than regular I/O (cin and cout, etc).
You cannot easily show the physical addresses. And if you could, it would be very operating system specific (and unrelated to C++).
On some systems, like e.g. Linux, two processes could be set up to share some common (virtual) subspace. Under Linux, you could use the mmap system call, or the shmat system calls, for such sharing purposes.
But Linux don't know about <conio.h> and I know nothing about Windows.
I suggest reading the documentation about the memory related system calls provided by your operating system. This usually means several days or weeks of learning efforts.
mainly i tried this codes for that reason , to know limit or the constrain to access values out the band of the array , but faced the previous problem .
It works fine because arrays aren't limited...if you want to have automatic checks for out of bound data, either you have to implement them yourself (not recommended) or use an STL container (std::vector, std::deque, etc)