int type can store 4 bytes on most modern computers (from -2147483647 to 2147483647)
This means that it "can" also "store SOME address, only the problem is that your address is larger than 2147483647, it will cause overflow and you will not be able to get the address (which is very bad for your program obviously)
An address is a memory number. Pointers are used to store addresses, they are larger (8 bytes on 64-bit systems, 4 bytes on 32-bit systems), and they are also unsigned (only positive)
which means that if you act on int n="String"; if the address "String" is under the number 2147483647, this will not cause problems, and the code will be launched (DO NOT SHOULD THIS)
http://www.tutorialspoint.com/c_standard_library/limits_h.htm
Now, if you think about it, you can guess why there is a 4 GB limit on 32-bit systems
(sorry for possible English errors, I'm French)
source share