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

永康做网站公司做网站还有前景么

永康做网站公司,做网站还有前景么,学校网站代码,网站建设优化文章目录 一、乱臣贼子---结构体1.1结构体类型的声明1.1.1特殊的声明 1.2结构体的自引用1.3结构体变量的定义和初始化1.4结构体大小计算#xff08;内存对齐知识#xff09;1.4.1修改默认对齐数 1.5结构体传参1.6结构体实现位段1.6.1什么是位段1.6.2位段的内存分配1.6.3位段的… 文章目录 一、乱臣贼子---结构体1.1结构体类型的声明1.1.1特殊的声明 1.2结构体的自引用1.3结构体变量的定义和初始化1.4结构体大小计算内存对齐知识1.4.1修改默认对齐数 1.5结构体传参1.6结构体实现位段1.6.1什么是位段1.6.2位段的内存分配1.6.3位段的跨平台问题 二、认贼作父---枚举2.1枚举类型的定义2.2枚举定义变量2.3枚举的优点 三、贼眉鼠眼---联合3.1联合类型的定义3.2联合特点3.3联合大小的计算 一、乱臣贼子—结构体 首先是最难对付的乱臣贼子—结构体他的体量最大是各种值的集合这些值称为成员变量。每个成员可以是不同类型的变量 1.1结构体类型的声明 struct tag结构体标签 { member list }variable-list;例如想描述一个学生 struct Stu {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号 }; //分号不能丢这里的struct 和名称标签Stu两者合起来整体算一个类型名 1.1.1特殊的声明 在声明结构体时我们可以不完全的声明 如 //匿名结构体类型 struct {int a;char b;float c; }x; struct {int a;char b;float c; }a[20], *p;可以看到上述两种结构体类型的声明都没有给出名称标签tag 那么问题来了 在上述两个匿名结构体类型成员变量都相同的这种情况下 px是合法的吗即编译器会将他们俩识别为同一个吗 答案是不会的所以是非法的 同时要注意因为这个结构体类型是匿名的所以我们后续是无法调用的只能在刚创建时定义变量。 1.2结构体的自引用 当然的我们也可以在结构体中引用自身 struct node {int datastruct node NEXT; }; //这个可行吗这个是不行的因为如果这样嵌套自身的话会无限套娃那么sizeofstruct node的结果就无法计算了 正确如下 struct Node {int data;struct Node* next; };1.3结构体变量的定义和初始化 //1定义 struct Point {int x;int y; }p1; //声明类型的同时定义变量 struct Point P2 //后面再用该类型定义变量//2初始化定义变量同时赋初值 struct Point p3{1,3};//定义变量的同时赋初值 struct Stu //声明一个学生类型 {char name[15]; //存放姓名信息int age; //存放年龄信息 }s; //声明同时定义变量 s{zhangsan,15}; //赋初值//3嵌套初始化 struct Node {int a;struct Point p; //嵌套前面的结构体类型struct Node*NEXT; //引用自身 }n1{5,{2,4},NULL}; //结构体嵌套初始化struct Node n2{2{3,0}NULL} //结构体嵌套初始化1.4结构体大小计算内存对齐知识 这块儿知识十分重要噢 我们先来看下面这一段代码 struct Stu {char name[15];int age; }; printf(%d\n,sizeof(struct Stu));大家觉得这个代码结果会是什么呢 实际结果如下 有同学或许会纳闷name数组占15个字节空间age整型占4字节空间154不是19个字节吗 这就涉及到结构体内存对齐的规则了 1.结构体第一个成员存放在结构体变量初始0偏移的位置 2.从第二个成员开始存放的位置是其对齐数的整数倍处对齐数为最大对齐数和当前成员变量大小之间的较小值其中不同编译器默认对齐数不同vs默认为8如果成员是数组则看元素类型大小 3.结构体的总大小应为最大对齐数的整数倍最大对齐数所有成员变量对齐数中最大的 4.如果嵌套了结构体对于该结构体成员来说应对齐到自身内部成员中的最大对齐数的整数倍此时结构体的大小也为最大对齐数嵌套结构体内部成员的对齐数也要参与比较的整数倍 看到这里很多同学可能会比较疑惑这种内存对齐的操作不是会浪费内存空间降低内存利用率吗为什么要有这样的规定 查阅了大部分资料总结为以下两点 平台原因(移植原因) 不是所有的硬件平台都能访问任意地址上的任意数据的某些硬件平台只能在某些地址处取某些特 定类型的数据否则抛出硬件异常。性能原因 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于为了访问未对齐的内存处理器需要作两次内存访问而对齐的内存访问仅需要一次访 问。因为在32位的系统中内存每次只能读取4个字节而如果内存数据不是对齐放着的话很多时候需要我们对内存进行多次访问才能读完所需的数据 总结 其实这种内存对齐的操作本质上就是以空间换取时间 所以如果我们要使结构体既满足结构对齐又不那么浪费空间。就要在以后设计的时候尽量让所占用字节小的成员变量集中在一起。 1.4.1修改默认对齐数 这就要用到预处理指令#pragma pack() 具体如下 #pragma pack(1) //将默认对齐数修改为1 struct S1 {char c1;int age; }; #pragma pack() //恢复默认对齐数注意在修改时最好是2的倍数因为内存一次是读取4个字节要方便读取 1.5结构体传参 这里有两种传参的方式 一是传结构体变量自身过去 二是结构体变量的地址过去 如下 struct Stu {char name[15];int age; }s;void Print1(struct Stu a) //结构体传参 {printf(%d\n,a.age); } void Print2(struct Stu *p) //结构体地址传参 {printf(%d\n,p-age); } Print1(s); Print2(s);两种方法都是可行的但是哪个函数的实现好些呢 答案是Print2 因为函数传参时参数是需要压栈的。如果传递一个结构体对象时结构体过大参数压栈开销就会比较大所以会使性能下降。而传址调用地址大小是固定的只有4/8字节大小32位系统地址大小都是4字节64位为8压栈开销就很小。 所以结构体传参时要传地址 1.6结构体实现位段 1.6.1什么是位段 位段的声明和结构是类似的有两个不同 1.位段的成员必须是 int、unsigned int 、signed int或者char属于整型家族类型 2.位段的成员名后边有一个冒号和一个数字。 如下 struct s {int a: 2; char b: 1;unsigned int c:4; }; //A就是一个位段类型1.6.2位段的内存分配 1.位段的空间上是按照需要以4个字节 int 或者1个字节 char 的方式来开辟的。 2.位段冒号后面的数字表示分配给这个变量几个比特的空间。 3.位段涉及很多不确定因素位段是不跨平台的注重可移植的程序应该避免使用位段。 4.在开辟的空间分配完当前变量还有剩余且满足下一个成员变量所需时会使用剩余空间但是当剩余内存不满足下一次需要时是否仍会使用剩余变量的行为是未定义的在不同的系统下可能会使用也可能不会这也就涉及了下面要讲的跨平台性的问题 1.6.3位段的跨平台问题 int 位段被当成有符号数还是无符号数是不确定的。位段中最大位的数目不能确定。16位机器最大1632位机器最大32写成27在16位机 器会出问题。位段中的成员在内存中从左向右分配还是从右向左分配标准尚未定义。当一个结构包含两个位段第二个位段成员比较大无法容纳于第一个位段剩余的位时是舍弃剩余的位还是利用这是不确定的。 总结 跟结构相比位段可以达到同样的效果但是可以很好的节省空间但是有跨平台的问题存在。 二、认贼作父—枚举 枚举就是把可能的值一一列举 比如我们现实生活中 一周的星期一到星期日是有限的7天可以一一列举。 性别有男、女、保密也可以一一列举。 月份有12个月也可以一一列举 这里就可以使用枚举了。 2.1枚举类型的定义 enum Day //星期 {Mon,Tues,Wed,Thur,Fri,Sat,Sun }; enum Sex //性别 {MALE,FEMALE,SECRET };enum Day、enum Sex就是枚举类型 {}中的内容是枚举类型的可能取值也叫枚举常量 。 这些可能取值都是有值的默认从0开始一次递增1当然在定义的时候也可以赋初值。 enum Color {BLUEREDYELLOW24 //赋初值从赋初值的位置往下值递增1前面的值照常从0开始递增1GREEN }; //BLUE对应值为0 //RED对应值为1 //YELLOW对应值为24 //GREEN对应值为252.2枚举定义变量 只能拿枚举常量给枚举变量赋值这样才不会产生类型差异 2.3枚举的优点 我们可以使用 #define 定义常量为什么非要使用枚举 枚举的优点 增加代码的可读性和可维护性和#define定义的标识符比较枚举有类型检查更加严谨。防止了命名污染封装便于调试使用方便一次可以定义多个常量 三、贼眉鼠眼—联合 联合也是一种特殊的自定义类型 这种类型的定义也包含一系列成员不过特殊的是这些成员公用同一块内存空间因此联合体也叫共用体 3.1联合类型的定义 union Un //联合类型的声明 {char a[5];int b; }; // 联合类型变量的定义 union Un un;3.2联合特点 联合的成员是公用同一块空间的这样一个联合变量的大小至少是最大成员的大小因为至少得有能力保存那个最大成员 union Un {char a[5];char b[2]; }; //下面这两个输出结果一样吗 printf(%p\n,a); printf(%p\n,b);这两个输出结果应该是一样的 联合体变量中的成员char a[5] 和 char b[2]是用同一块空间的所以它们的初始地址也是相等的 接着来观察下面这一串代码 union Un {int a;int b; }; union Un un; //下面这两个输出结果是什么 un.a2; un.b3; printf(%s\n,un.a); printf(%s\n,un.b);结果为3 还是因为a和b共用空间所以当一个值被修改时另一个值也可能会被修改 这也意味着当使用联合体时一次只能使用一个变量 3.3联合大小的计算 1.联合的大小至少是最大成员的大小。 2.当最大成员大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍。(联想结构体内存对齐) 好了今天的三兄弟也就给大家介绍到这里了欢迎大家在评论区留言指正噢
文章转载自:
http://www.morning.xctdn.cn.gov.cn.xctdn.cn
http://www.morning.mtsgx.cn.gov.cn.mtsgx.cn
http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn
http://www.morning.lptjt.cn.gov.cn.lptjt.cn
http://www.morning.gassnw.com.gov.cn.gassnw.com
http://www.morning.pggkr.cn.gov.cn.pggkr.cn
http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn
http://www.morning.osshjj.cn.gov.cn.osshjj.cn
http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn
http://www.morning.qxlhj.cn.gov.cn.qxlhj.cn
http://www.morning.hfnbr.cn.gov.cn.hfnbr.cn
http://www.morning.dpppx.cn.gov.cn.dpppx.cn
http://www.morning.npbnc.cn.gov.cn.npbnc.cn
http://www.morning.xjmpg.cn.gov.cn.xjmpg.cn
http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn
http://www.morning.hptbp.cn.gov.cn.hptbp.cn
http://www.morning.sxhdzyw.com.gov.cn.sxhdzyw.com
http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn
http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn
http://www.morning.ummpdl.cn.gov.cn.ummpdl.cn
http://www.morning.tyhfz.cn.gov.cn.tyhfz.cn
http://www.morning.bpmtq.cn.gov.cn.bpmtq.cn
http://www.morning.plgbh.cn.gov.cn.plgbh.cn
http://www.morning.mtrz.cn.gov.cn.mtrz.cn
http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com
http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn
http://www.morning.dlurfdo.cn.gov.cn.dlurfdo.cn
http://www.morning.lynkz.cn.gov.cn.lynkz.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.jrdbq.cn.gov.cn.jrdbq.cn
http://www.morning.gfkb.cn.gov.cn.gfkb.cn
http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn
http://www.morning.krfpj.cn.gov.cn.krfpj.cn
http://www.morning.jzklb.cn.gov.cn.jzklb.cn
http://www.morning.psyrz.cn.gov.cn.psyrz.cn
http://www.morning.dxrbp.cn.gov.cn.dxrbp.cn
http://www.morning.llmhq.cn.gov.cn.llmhq.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.cprbp.cn.gov.cn.cprbp.cn
http://www.morning.dygqq.cn.gov.cn.dygqq.cn
http://www.morning.kntbk.cn.gov.cn.kntbk.cn
http://www.morning.zycll.cn.gov.cn.zycll.cn
http://www.morning.rbrd.cn.gov.cn.rbrd.cn
http://www.morning.mgwdp.cn.gov.cn.mgwdp.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.mnqz.cn.gov.cn.mnqz.cn
http://www.morning.rgyts.cn.gov.cn.rgyts.cn
http://www.morning.zgnng.cn.gov.cn.zgnng.cn
http://www.morning.jzkqg.cn.gov.cn.jzkqg.cn
http://www.morning.itvsee.com.gov.cn.itvsee.com
http://www.morning.phjyb.cn.gov.cn.phjyb.cn
http://www.morning.pigcamp.com.gov.cn.pigcamp.com
http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn
http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn
http://www.morning.jfxth.cn.gov.cn.jfxth.cn
http://www.morning.ypcbm.cn.gov.cn.ypcbm.cn
http://www.morning.hkysq.cn.gov.cn.hkysq.cn
http://www.morning.xpgwz.cn.gov.cn.xpgwz.cn
http://www.morning.clfct.cn.gov.cn.clfct.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn
http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn
http://www.morning.sjftk.cn.gov.cn.sjftk.cn
http://www.morning.dshkp.cn.gov.cn.dshkp.cn
http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn
http://www.morning.wlxfj.cn.gov.cn.wlxfj.cn
http://www.morning.pznnt.cn.gov.cn.pznnt.cn
http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn
http://www.morning.lwyqd.cn.gov.cn.lwyqd.cn
http://www.morning.kkdbz.cn.gov.cn.kkdbz.cn
http://www.morning.pqppj.cn.gov.cn.pqppj.cn
http://www.morning.tphrx.cn.gov.cn.tphrx.cn
http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn
http://www.morning.rycd.cn.gov.cn.rycd.cn
http://www.morning.yfqhc.cn.gov.cn.yfqhc.cn
http://www.morning.gjqgz.cn.gov.cn.gjqgz.cn
http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn
http://www.morning.tklqs.cn.gov.cn.tklqs.cn
http://www.morning.mnqz.cn.gov.cn.mnqz.cn
http://www.morning.kqbzy.cn.gov.cn.kqbzy.cn
http://www.tj-hxxt.cn/news/253588.html

相关文章:

  • 多个wordpress站点同步开源之家
  • 做网站属于技术开发吗一个二手书网站的建设目标
  • 域名链接网站网络热词作文
  • 刚察县公司网站建设宁波网站建设网站开发
  • 专门做评论的网站微信平台开发公司
  • 公司网站建设吧个好免费网络游戏排行榜
  • 制作网站的公司叫什么网站建设都一般步骤
  • Ui互联网门户网站建设中国建筑人才招聘网官网
  • 山东三强建设咨询有限公司网站购买域名
  • 网站建设的脑图规划湖南省郴州市有哪些县
  • 辽宁省建设教育协会网站加工平台v型架
  • 山东城乡和住房建设厅网站物流网站建设报价
  • 织梦云建站系统如何自己学建设网站
  • 宁波江北网站建设全网营销网站建设
  • 实验室网站建设的调查报告石家庄外贸网站制作公司
  • 做网站天通苑热 动漫-网站正在建设中-手机版6
  • 点蜜免费空间上传网站蒙阴县城乡建设局网站
  • 网站建设的流程简答题安徽天筑建设集团网站
  • 搜索引擎优化网站排名网店设计的重要性
  • 集翔网大网站建设红网
  • 做任务什么网站餐饮wordpress模板
  • 快速建站公司地址网络营销的网站
  • 服务器网站开发过程网站建设 菜鸟教程
  • 北京网站建设方案系统oppo软件商店更新
  • pic cms图片网站管理系统手机版2023全国企业公司大黄页
  • 网站做301对优化有影响品牌vi设计欣赏
  • 网站套餐到期什么意思wordpress免费网站
  • 网站建设客户常见问题怎么制作网站论坛模板
  • 企业网站需要哪些功能淘宝关键词优化推广排名
  • 全flash网站模板嵌入式培训机构有哪些