SpiceWare is right, in that the number that follows the colon can be something other than one. The number determines how many bits to reserve in the storage unit for that field. The number cannot be greater that the size of the storage unit., so you can't say something like:
\nstruct big_ass\n{\n unsigned int super_long_int:128;\n};\n\nAlso, as someone else here said, you cannot take the address of a bit field; the compiler will not take kindly to such an attempt.
Finally, the field must still have a type. The ANSI standard requires the implementation to support all the integer types, but does not require the implementation to actually only reserve that sized storage unit for it. For example, the compiler is supposed to accept something like:
\nstruct its_OK\n{\n unsigned char a_field:4;\n unsigned char a_nother_field:5;\n};\n
But you cannot assume that the size of the structure is 2 bytes. (Since 9 bits have been allocated, the structure cannot fit into a single byte.) It can legally be as large as 8 bytes (on a 32-bit machine).
HTH...