В стандарте C есть понятие нет реальной или виртуальной памяти, поэтому вопрос не имеет смысла.Реализация может делать это по своему усмотрению.
В ОС с виртуальной памятью вы почти наверняка получите виртуальный адрес.В ОС без виртуальной памяти вы, вероятно, этого не сделаете.
В обоих случаях вы получите адрес, который вы можете использовать для всех обычных вещей, для которых C предоставляет адреса, таких как разыменование,освобождение, перераспределение и пр. То, что является вашей единственной гарантией, а также единственной вещью, которой вы обычно должны заниматься.
Вы можете бесплатно предоставить вам список последовательных идентификаторов (1, 2, 3, ...) если он пожелает, при условии, что все ожидаемые операции все еще работают так, как рекламируется.Конечно, это может быть не очень эффективно в нынешних архитектурах, но все еще выполнимо.