当前位置: 首页 > news >正文

网站源码下载 用户注册做门户网站需要什么

网站源码下载 用户注册,做门户网站需要什么,网站导航栏特效,用jsp做网站一般会用到什么目录 1. 前言2. 联合体2.1 联合体类型的声明2.2 联合体的特点2.3 相同成员的结构体和联合体对比2.4 联合体大小的计算2.4 判断当前机器的大小端 3. 枚举3.1 枚举类型的声明3.2 枚举类型的优点3.3 枚举类型的使用 1. 前言 在之前的博客中介绍了自定义类型中的结构体#xff0c;… 目录 1. 前言2. 联合体2.1 联合体类型的声明2.2 联合体的特点2.3 相同成员的结构体和联合体对比2.4 联合体大小的计算2.4 判断当前机器的大小端 3. 枚举3.1 枚举类型的声明3.2 枚举类型的优点3.3 枚举类型的使用 1. 前言 在之前的博客中介绍了自定义类型中的结构体有想了解的可以点这个链接link 今天来分享另外两种类型联合和枚举。 2. 联合体 2.1 联合体类型的声明 像结构体一样联合体也是由一个或者多个成员构成这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。 联合体的特点是所有成员共用同一块内存空间。所以联合体也叫共用体。 ----------------------------------------------------------------------------------------- 我们举个例子来看一下 我们发现在联合体中的大小占4个字节这是为什么呢 我们来看看它每个成员的地址 我们发现那三个的地址都是一样的。 改到32位平台上发现内存地址还是一样的。 也就是说它们共用一块空间 ----------------------------------------------------------------------------------------- 给联合体其中⼀个成员赋值其他成员的值也跟着变化。 在同一个时间点只能使用一个联合体成员。 2.2 联合体的特点 联合的成员是共用同一块内存空间的这样一个联合变量的大小至少是最大成员的大小因为联合⾄少得有能力保存最大的那个成员。 来看个例子 #include stdio.h//联合类型的声明 union Un {char c;int i; };int main() {//联合变量的定义union Un un { 0 };un.i 0x11223344;un.c 0x55;printf(%x\n, un.i);return 0; }我们来看看在内存中的变换 代码的输出我们发现将i的第4个字节的内容修改为55了。 我们仔细分析就可以画出un的内存布局图。 2.3 相同成员的结构体和联合体对比 我们再对比一下相同成员的结构体和联合体的内存布局情况 结构体的代码 struct S {char c;int i; }; struct S s {0};联合体的代码 union Un {char c;int i; }; union Un un {0};对于结构体来说就占了8个字节浪费了3个字节而联合体占了4个字节。 2.4 联合体大小的计算 当最大成员大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍。 举个例子计算下面两个联合体的大小? #include stdio.hunion Un1 {char c[5];//5 1 8 1int i;//4 4 8 4 };union Un2 {short c[7];//14 2 8 2int i;//4 4 8 4 };int main() {printf(%d\n, sizeof(union Un1));//8printf(%d\n, sizeof(union Un2));//16return 0; }对于Un1char c[5]占五个字节char类型占1个字节对齐数默认是8对比之后取对齐数取1。 int i占4个字节对齐数默认是8对比之后取对齐数取4。所以等于5时5不是4的倍数就得浪费3个字节取8。 对于Un2 short c[7]占14个字节short占2个对齐数默认是8对比之后取对齐数取2 int i占4个字节对齐数默认是8对比之后取对齐数取4。所以等于14时14不是4的倍数就得浪费2个字节取16。 联合体的大小并不是其中最大成员的大小 ----------------------------------------------------------------------------------------- 使用联合体是可以节省空间的 举例 比如我们要搞一个活动要上线一个礼品兑换单礼品兑换单中有三种商品图书、杯子、衬衫。 每⼀种商品都有库存量、价格、商品类型和商品类型相关的其他信息。 图书书名、作者、页数 杯子设计 衬衫设计、可选颜⾊、可选尺寸 如果我们使用结构体来定义这个活动的礼物时 代码如下 struct gift_list {//公共属性int stock_number;//库存量double price; //定价int item_type;//商品类型//特殊属性char title[20];//书名char author[20];//作者int num_pages;//⻚数char design[30];//设计int colors;//颜⾊int sizes;//尺⼨ };上述的结构其实设计的很简单用起来也方便但是结构的设计中包含了所有礼品的各种属性这样使得结构体的大小就会偏大比较浪费内存。因为对于礼品兑换单中的商品来说只有部分属性信息是常用的。 所以我们就可以把公共属性单独写出来剩余属于各种商品本身的属性使用联合体起来这样就可以介绍所需的内存空间一定程度上节省了内存。 用联合体来实现代码如下 struct gift_list {int stock_number;//库存量double price; //定价int item_type;//商品类型union {struct{char title[20];//书名char author[20];//作者int num_pages;//页数}book;struct{char design[30];//设计}mug;struct{char design[30];//设计int colors;//颜色int sizes;//尺寸}shirt;}item; };这里使用了匿名结构体这里的书、杯子和衬衫是不能同时存在的。就按照最大的结构体内存也就是书所占的大小来开辟空间这样其它的也能放下。 我们就可以选择礼物及它的成员。 2.4 判断当前机器的大小端 在之间博客中有说明这里就不过多讲述有需要的可以查看; link 之前所写的代码是利用指针来判断的 int main() {int a 1;if (*(char*)a 1){printf(小端\n);}else{printf(大端\n);}return 0; }结果显示的是小端。 ----------------------------------------------------------------------------------------- 这次我们使用联合体来判断 int check_sys() {union{char c;int i;}u;u.i 1;return u.c; }int main() {if (check_sys() 1)printf(小端\n);elseprintf(大端\n);return 0; }也就是来判断一下u.c存的是0还是1 结果和上面一样是小端存储 3. 枚举 3.1 枚举类型的声明 枚举顾名思义就是一一列举。 把可能的取值一一列举。 比如我们现实生活中 一周的星期一到星期日是有限的7天可以一一列举 性别有男、女、保密也可以一一列举 月份有12个月也可以一一列举 三原色也是可以意义列举 这些数据的表示就可以使用枚举了。 enum Day {//列出的是枚举类型的可能取值//这些列出的可能取值被称为枚举常量Mon,Tues,Wed,Thur,Fri,Sat,Sun };enum Sex {MALE,FEMALE,SECRET };enum Color//颜⾊ {RED,GREEN,BLUE };以上定义的 enum Day enum Sex enum Color 都是枚举类型。 {}中的内容是枚举类型的可能取值也叫 枚举常量 。 这些可能取值都是有值的默认从0开始依次递增1当然在声明枚举类型的时候也可以赋初值。 来看看日期的取值 也就是默认从0开始依次递增1一直到6。 当然在声明枚举类型的时候也可以赋初值。 enum Color//颜⾊ {RED 2,GREEN 4,BLUE 8 };int main() {printf(%d %d %d\n, RED, GREEN, BLUE);return 0; }3.2 枚举类型的优点 我们可以使用 #define 定义常量为什么非要使用枚举 枚举的优点 增加代码的可读性和可维护性和#define定义的标识符比较枚举有类型检查更加严谨。便于调试预处理阶段会删除 #define 定义的符号使用方便一次可以定义多个常量枚举常量是遵循作用域规则的枚举声明在函数内只能在函数内使用 举个例子实现一个简单计算器 我们就能将加减乘除设置成枚举类型这样在主函数中进行对应的操作时就会知道就行的是哪中计算。 这里只是简单举个例子说明一下枚举的优点具体的函数大家可以自行修改。 void menu() {printf(*********************\n);printf(*** 1.add 2.sub ***\n);printf(*** 3.mul 4.div ***\n);printf(*** 0.exit ***\n);printf(*********************\n); }enum Option {EXIT,//0ADD,//1SUB,//2MUL,//3DIV//4 }; int Add(int a, int b) {return a b; }int Sub(int a, int b) {return a - b; }int Mul(int a, int b) {return a * b; }int Div(int a, int b) {return a / b; }int main() {int input 0;int a 0;int b 0;do{menu();printf(请选择:);scanf(%d, input);scanf(%d %d, a,b);switch (input){case ADD:Add(a, b);break;case SUB:Sub(a, b);break;case MUL:Mul(a, b);break;case DIV:Div(a, b);break;default:break;}} while (input);return 0; }3.3 枚举类型的使用 enum Color//颜色 {RED 1,GREEN 2,BLUE 4 };int main() {enum Color clr GREEN;//使用枚举常量给枚举变量赋值enum Color clr2 2;printf(%d\n, sizeof(clr));//4return 0; }那是否可以拿整数给枚举变量赋值呢在C语言中是可以的但是C是不行的C的类型检查比较严格。 有错误请指出大家一起进步
http://www.sczhlp.com/news/181097/

相关文章:

  • 个人网站系统中国四大软件外包公司是哪四个
  • 沈阳个人网站建设选择做asp.net网站参考文献
  • 百度个人网站建设网站怎么做谷歌权重
  • 手机上网网站建设网站开发项目进度完成表
  • 医院哪个科室负责网站建设内蒙古城乡和建设厅网站
  • 网站链接做投票查网站流量的网址
  • 做职业测评的网站外贸网站的特色
  • 手机微网站 模板百度应用app
  • 室内设计在线网站编程的基础知识
  • 旅游网站如何做建立一个网站如何开通账号
  • 最重要的网站贵阳市城乡建设学校网站
  • 自己做网站卖阀门浙江省嘉兴市建设局网站
  • 网站建设案例的公司长沙广告招牌制作公司
  • 网站维护提示代码南宁建设公司网站
  • 安阳专业做网站公司今傲网站做的怎么样
  • 展示系统 网站模板免费下载中卫网站推广优化公司
  • 赵县住房和城乡建设局网站在哪个网站做游戏视频好
  • 网站网站制作网站改版数据来源表改怎么做
  • 无锡网站建设365caiyi企业网站作用
  • 罗湖网站 建设深圳信科江西百度推广开户多少钱
  • 本地网站构建地推团队联系方式
  • 外包商网站怎么做简单的手机网站模板免费下载
  • 武进网站建设市场南通网站建设方法
  • 山东省住房城乡建设厅网站首页求网站备案照片
  • 国际网站平台有哪些wordpress换编辑器
  • 22 LCA模拟赛2T1 奶龙与贝利亚 题解
  • 网站建设咨询问卷深圳公司地址变更
  • logo和网站主色调枫叶建站
  • 网站怎么做静态化济南网站推广服务
  • 单位申请免费网站高端外贸网站建设