Preguntas sobre C bitfields

¿Es el campo de bits un concepto de C o C ++?

¿Se puede usar solo dentro de una estructura? ¿Cuáles son los otros lugares donde podemos usarlos?

AFAIK, los campos de bits son variables de estructura especial que ocupan la memoria solo para un no especificado. de bits. Es útil para guardar memoria y nada más.¿Estoy en lo correcto?

Codifiqué un pequeño programa para comprender el uso de los campos de bits. Pero creo que no está funcionando como se esperaba. Espero que el tamaño de la siguiente estructura sea 1 + 4 + 2 = 7 bytes (considerando que el tamaño de int sin signo es de 4 bytes en mi máquina), pero para mi sorpresa, resulta ser de 12 bytes (4 + 4 + 4 ).¿Alguien puede decirme por qué?

#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;
}

SALIDA:

sizeof struct s = 12 bytes 

Respuestas a la pregunta(5)

Su respuesta a la pregunta