备案期间网站能打开吗,网站设计与应用方向论文,启动网站建设的请示,西安十强网络公司联合体与枚举 联合体枚举问题 联合体 联合体也是由一个或多个成员构成的数据类型,它最大的特点是只为最大的一个成员开辟空间,其他成员共用这个空间,这个东西也叫共用体!!!
union Un
{char c;int i;
};int main()
{union Un un { 0 };un.c 0x01;//先为最大的成员开辟空间un.… 联合体与枚举 联合体枚举问题 联合体 联合体也是由一个或多个成员构成的数据类型,它最大的特点是只为最大的一个成员开辟空间,其他成员共用这个空间,这个东西也叫共用体!!!
union Un
{char c;int i;
};int main()
{union Un un { 0 };un.c 0x01;//先为最大的成员开辟空间un.i 0x11223344;printf(%x\n, un.c);printf(%x\n, un.i);printf(%d\n, sizeof(un));return 0;
}**联合体的特点: 联合的成员是共⽤同⼀块内存空间的这样⼀个联合变量的⼤⼩⾄少是最⼤成员的⼤⼩因为联合⾄少得有能⼒保存最⼤的那个成员。
**联合体内存分布规则 *联合体大小至少是最大成员的大小! *当最大成员大小不是最大对齐数整数倍的时候时,要对齐到最大对齐数的整数倍!!!
union Un1
{char c[5];int i;
};union Un2
{short c[7];int i;
};int main()
{printf(%zd\n, sizeof(union Un1));printf(%zd\n, sizeof(union Un2));return 0;
}解析:第一个联合体最大的一个占5个字节,它不是4的倍数,因此成8个字节,浪费三个字节!!! 第二个联合体的最大一个占14个字节,不是4个倍数,因此浪费2个字节,成16个字节,成为4的倍数!!! **判断大小端问题!!!
//判断大小端问题int CheckSys()
{int a 0x00000001; // 00 00 00 01return (*(char*)a);
}int main()
{if (CheckSys() 1){printf(小段存储模式\n);}else {printf(大端存储模式\n);}return 0;
}/
//判断大小端,运用联合体的内存分布问题,巧妙地运用了联合体!!!
union
{int i;char c;
}un;int main()
{un.i 0x11223344;if (un.c 0x44){printf(小段存储模式\n);}else{printf(大段存储模式\n);}return 0;
}枚举问题
1.枚举就是一一列举的问题!!!
//枚举一一列举
enum Day
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};enum Sex
{MALE 1,FEMALE,SECRET
};enum Color
{RED,GREEN,BLUE
};int main()
{printf(%d\n, Mon);printf(%d\n, Fri);printf(%d\n, MALE);return 0;
}以上定义的 enum Day enum Sex enum Color 都是枚举类型。{}中的内容是枚举类型的可能取值也叫 枚举常量 。 这些可能取值都是有值的默认从0开始依次递增1当然在声明枚举类型的时候也可以赋初值. 2.枚举类型的优点 / 1. 增加代码的可读性和可维护性 2. 和#define定义的标识符⽐较枚举有类型检查更加严谨。 3. 便于调试预处理阶段会删除 #define 定义的符号 4. 使⽤⽅便⼀次可以定义多个常量 5. 枚举常量是遵循作⽤域规则的枚举声明在函数内只能在函数内使⽤ 3.枚举类型的使用 enum Color { RED, GREEN, BLUE }; int main() { enum Color color RED; printf(“%d\n”, color); return 0; } ------------------------------------------ 完结!!!