How can i translate it into an Memory Address?
The number already represents a memory address, no translations required.
How can i Use that address & modify the value?
In the embedded systems arena, we take pointers and assign them to pointers. If we want to access a 16-bit registers or memory address, we would assign a uint16_t
pointer to the value.
uint16_t * memory_pointer = (uint16_t *) 0x40000000;
It's possible to print ALL the Memory Address that the process are using?
This is an operating system issue. Some operating systems try heavily to prevent one program from accessing the memory area of another process. The "other process" may be swapped to disk when your process runs and use the same memory area that your process does. So whether this is possible or not depends on your platform's operating system.
It's possible to get the Value indicated by the Address?
Depends on the operating system and the platform. Some platforms have memory at specific addresses and accessing an address outside that range results in undefined behavior.
Some operating systems guard against accessing memory outside your process (such as the kernel's memory). The results of accessing the memory in this case depends on the operating system.
The method for accessing memory is to dereference a pointer. In C++, for byte access, you would use a pointer to uint8_t
.