Если я правильно понимаю, то адрес записывается в шестнадцатеричном виде, а размер short* зависит от архитектуры и может быть либо 4 либо 8. А какое множество значений есть у short*?
1 Answers
адрес записывается в шестнадцатеричном виде
он так может записываться исключительно для удобства человека. Но можно записать в и бинарном виде, и в восьмеричном, и десятичном.
и может быть либо 4 либо 8.
а на некоторых микроконтроллерах (например на некоторых ардуино) и меньше - 2 байта.
А какое множество значений есть у short*?
такое же как и int* или char*. Множество возможных значений обычно равно 2 в степени (количество бит в байте (обычно это 8) умножить на кол-во байт (2,4 или 8)). Вот и получается, на современных компьютерах, где указатель обычно 8 байтовый, возможных значений 2 в 64 приблизительно равно 1.8 в 19.
А какое множество значений
а множество зависит от того, как Вы будете интерпретировать биты. Это может быть от 0 до 0xFFFFFFFFFFFFFFFF, так и другие варианты. Может у нас будет математика, в которой не два варианта знака (то есть не просто плюс и минус), а 256 (ну, математики они такие) и тогда остальные 7 байт (мы все ещё о 8 байтовых указателях говорим) будет значением. Хотя стоп, это же все таки адрес:)
- 112,121
- 6
- 94
- 160
-
Вообще, про указатели был бы уместным вопрос -- "какие его биты имеют значение для доступа к данным?" (понятно, что это зависит от конкретной системы и не переносимо) – avp Feb 19 '21 at 23:04
-
1Строго говоря, «множество значений»
short *не обязано быть таким же как уint *илиchar *. Одинаковое внутренне представление должны иметь а)void *и указатель на символьный тип; б) совместимые тип с и без спецификатора типа (const,restricted,volatile); в) все указатели на структуры. Все остальные типы не обязаны иметь одинаковое внутренне представление (в том числе ширину). – eanmos Feb 20 '21 at 04:59 -
Да, не обязано. Но скорее всего автор вопроса с ними не столкнется. А если бы это произошло, то его вопрос звучал немного по другому. Я видел, когда указатели на один и тот же тип отличаются по размеру (потому что они указывали на разную память (физически разную)). Но ещё не видел, что бы указатель на short просто так отличался от указателя на int. – KoVadim Feb 20 '21 at 12:27
short*вы имеете в виду указатель или то, на что он указывает? – avp Feb 19 '21 at 22:17void*. То-есть 2^64 или 2^32 значений. Иногда в архитектуре нет возможности к доступу к нечётному адресу. Тогда пополам. – AlexGlebe Feb 20 '21 at 06:53