Вопросы о битовых полях Си

Битфилд - это концепция C или C ++?

Может ли он использоваться только внутри структуры? Какие еще места мы можем использовать их?

AFAIK, битовые поля - это специальные структурные переменные, которые занимают память только для указанного no. бит. Это полезно для экономии памяти и ничего больше.Я прав?

Я написал небольшую программу, чтобы понять, как использовать битовые поля - но я думаю, что она работает не так, как ожидалось. Я ожидаю, что размер приведенной ниже структуры будет 1 + 4 + 2 = 7 байт (учитывая, что размер unsigned int равен 4 байтам на моей машине), но, к моему удивлению, он составляет 12 байт (4 + 4 + 4). ).Кто-нибудь может дать мне знать, почему?

#include <stdio.h>

struct s{
unsigned int a:1;
unsigned int b;
unsigned int c:2;
};

int main()
{
  printf("sizeof struct s = %d bytes \n",sizeof(struct s));
  return 0;
}

ВЫХОД:

sizeof struct s = 12 bytes 

Ответы на вопрос(5)

Ваш ответ на вопрос