【c专家编程】分析c语言的声明
联合:
在结构中,每个成员依次存储,而在联合中,所有成员都从偏移地址零开始存储,联合一般被用来节省空间,用法和struct相同。
union bits32_tag { int whole; // 一个32位的值 struct {char c0, c1, c2, c3;} byte; //4个8位的字节 }; int main() { bits32_tag value; value.whole = 0b1111111111111111; cout << "value.whole: " << value.whole << endl; // 65535 cout << "c0: " << (size_t)value.byte.c0 <<endl; // 4294967295 cout << "c1: " << (size_t)value.byte.c1 <<endl; // 4294967295 cout << "c2: " << (size_t)value.byte.c2 <<endl; // 0 cout << "c3: " << (size_t)value.byte.c3 <<endl; // 0 return 0; }
枚举:把一串名字与一串整型值联系在一起
格式:enum 可选标签 {...} 可选变量定义;
enum sizes { small = 7, medium, large = 10, humungous }; int main() { cout << small << " " << medium << " " << humungous ; return 0; }
缺省情况下,整型值从零开始,如果对列表中的某个标识符进行了赋值,那么其后的标识符的值比所赋的值大1。枚举有个优点,#define定义的名字一般在编译的时候被丢弃(被值给取代),而枚举名字则通常一直在调试器中可见,可以在调试代码时使用它们。