Hmm, nein, das erlaubt nur einen beliebig geformten Adressraum (nur durch diese Restriktion sind z.B. Überlappungen innerhalb des Adressraums abbildbar -- der Adressraum muss nicht linear sein). Eine Konvertierung eines Integer Typs in einen Pointer ist wohldefiniert (mit implementierungsspezifischem Ergebnis), und das ist nur möglich, wenn man sich auf einen Adressraum beschränkt oder den Adressraum zum Teil des Pointer-Typs macht.
Getaggte Pointer sind aber auch nicht so ungewöhnlich - meines Wissens benutzt Keil das auf dem 8051, um dessen Sammlung unterschiedlicher Adressräume in einem Pointertyp darstellen zu können.
Zitatdas geht nur über "qualifier", der C Standard sieht aber keine qualifier für verschiedene Adressräume vor. Genau da setzen entsprechende Extensions an und definieren eigene Qualifier (z.B. bei AVR PROGMEM für den Zugriff auf Programmspeicher).
PROGMEM ist veraltet, inzwischen kann GCC auch mit explizit benannten Adressräumen umgehen. Es gibt zu dem Thema wohl eine Standarderweiterung speziell für eingebettete Systeme, die das normiert hat.