Как вещи хранятся в памяти - PullRequest
0 голосов
/ 24 апреля 2020

Я только начал изучать C, и я узнал, что каждый байт памяти имеет адрес.

Мой вопрос: каков адрес целого числа, которое занимает 2 байта памяти?

Что если у нас есть данные, которые занимают 9 бит памяти? Я думаю о памяти как о длинном блоке блоков размером 1 байт с адресом. 9 бит занимают одну коробку и 1/9 следующей, что происходит с оставшимися 8/9 коробки?

1 Ответ

2 голосов
/ 24 апреля 2020

Стандарт 2018 C гласит в 6.2.6.1 2:

За исключением битовых полей, объекты состоят из непрерывных последовательностей из одного или нескольких байтов, числа, порядка и кодировки из которых явно определены [в стандарте C] или определены реализацией.

Стандарт обеспечивает гибкость реализации с помощью битовых полей. Как правило, последовательные битовые поля могут совместно использовать части байтов, или реализация может разделять их и оставлять некоторые биты неиспользованными.

Взятие адреса объекта в C дает указатель. Указатели в C указывают на целые объекты; не делается никаких различий в отношении того байта, на который они указывают, за исключением объектов, которые сами являются однобайтовыми, конечно Когда указатель преобразуется в указатель на символьный тип, результатом является указатель на младший байт в объекте (согласно 6.3.2.3 7). Однако это не означает, что исходный указатель был представлен с этим адресом.

...