I know the concept of register variable and it\'s use cases but there are few questions in my mind based on what I have tried.
I cannot access the address
Taking the address of a variable will FORCE the compiler to store it in a memory (unless it's an architecure where registers has an address - I think the TI 9900 series processors were implemented this way, but it's a vague memory from ca 1984). If you have told the compiler to use a register, that makes it incompatible. Although the C++ standard seems to suggest that the compiler isn't obliged to tell you so, and can in fact ignore the register keyword.
C++11 draft n3337, section 7.1.1, bullet 3
A register specifier is a hint to the implementation that the variable so declared will be heavily used. [ Note: The hint can be ignored and in most implementations it will be ignored if the address of the variable is taken. This use is deprecated (see D.2). — end note ]
(Edit: Yes, the TMS 9900 does indeed have "registers in memory", so theoretically, you can have the address of a register in that architecture - but the architecture is much more that "registers live in memory (which has an address)" than "registers have addresses").