Давайте попробуем вычислить его. Первое, что вам нужно знать размер структуры. Поскольку размер зависит от реализации, рассмотрим 32-разрядную машину.
Первый член вашей структуры, guitarID, имеет 4 байта. Затем у вас есть 3 бита в бренде, 6 бит в строках. Эти 2 вместе с дополнением составляют еще 2 байта. И тогда у вас есть еще 2 байта в цене. В общей сложности ваша структура занимает 8 байтов.
Теперь посмотрим, как хранится ваш массив. У вас есть матрица из 5 на 5 элементов. В памяти он хранится линейно, например:
x [0] [0] x [0] [1] x [0] [2] x [0] [3] x [0] [4] x [1] [0] x [1] [1] x [1] [2] x [1] [3]
и так далее. Я не знаю точно, что вы подразумеваете под x [1], но я предполагаю, что вас интересует адрес x [1] [0]. Вы можете видеть, что перед ним 5 элементов, что означает, что у него есть адрес с 5 * 8 = 40 байт выше адреса первого элемента. Я не могу дать вам абсолютный адрес в качестве ответа, так как 0xaaa, который вы упомянули как адрес для первого элемента, не выравнивается по слову.
'... короткая цена; }; x [5] [5] 'является проблемой. '... короткая цена; } x [5] [5]; 'больше смысла. – chux
«память выровнена с кратным 4» и «x is 0xaaa» противоречива, поскольку «0xaaa» не кратно 4. Таким образом, выравнивание в кратных 4 не происходит, или '0xaaa' является вымыслом. – chux
Как насчет того, чтобы начать с некоторых экспериментов? – MikeCAT