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

网站开发技术指标是什么无人区卡一卡二卡三乱码入口

网站开发技术指标是什么,无人区卡一卡二卡三乱码入口,四川建设网官网入口,网站建设逻辑个人主页点这里~ 结构体 一、结构体类型的声明1、结构的声明2、结构体变量的创建和初始化3、声明时的特殊情况4、自引用 二、结构体内存对齐1、对齐规则2、存在内存对齐的原因3、修改默认对齐数 三、结构体传参四、结构体实现位段 一、结构体类型的声明 我们在指针终篇中提到过… 个人主页点这里~ 结构体 一、结构体类型的声明1、结构的声明2、结构体变量的创建和初始化3、声明时的特殊情况4、自引用 二、结构体内存对齐1、对齐规则2、存在内存对齐的原因3、修改默认对齐数 三、结构体传参四、结构体实现位段 一、结构体类型的声明 我们在指针终篇中提到过结构体的这一部分内容详情请阅拙作终の指针现在我们来整个展开叙述一下 1、结构的声明 struct tag {member-list; }variable-list;花括号 { } 中放的是成员变量结构的每个成员变量都可以是不同的类型每一个被定义的结构体中都要有至少一个成员变量结构是一些值的集合。 定义一个人 struct man {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//身份证号 };2、结构体变量的创建和初始化 #include stdio.h struct Stu {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//身份证号int main(){struct Stu s { 张三, 18, 男, 111111200602023215 };//结构体顺序初始化struct Stu s2 { .age 19, .name lisi, .id 111111200502023222, .sex ⼥ };//指定顺序初始化return 0; };3、声明时的特殊情况 匿名结构体类型如果没有对结构体进行重命名的话仅能使用一次 struct {int a;char b;float c; }x;形如上面代码的结构体未重命名的话使用这一次便被回收 4、自引用 自引用的正确方法 struct Node {int data;struct Node* next; };通过结构体指针的形式来进行自引用 并且结构体自引用是不能用typedef重命名的 像这个 typedef struct {int a;Node* next; }Node;我们会在创建Node结构体之前在结构体当中使用Node所以不可取 二、结构体内存对齐 结构体内存对齐是计算结构体大小的一个必备条件 1、对齐规则 ①结构体的第一个成员对齐到结构体变量起始位置的地址 ②其他成员变量要对齐到对齐数的整数倍的地址处 对齐数编译器默认的对齐数与该成员变量大小的较小值(我所使用的vs2022默认对齐数为8) ③结构体总大小一定为对齐数的整数倍 ④如果结构体中嵌套了结构体嵌套的结构体对齐到对齐到自己成员中最大对齐数的整数倍处结构体的整体大小就是所有最大对齐数的整数倍 我们可以将大小看作一个数组每一个位置都是一个字节 struct S1 {char c1;//1字节8,就将1字节放在0位置处int i;//4字节8,因为123位置不是4的整数倍所以我们直接找到4位置将4个字节放入char c2;//1字节8,放在8位置处 };又因为现在指向9位置处9不是最大对齐数4的整数倍所以要指向12处所以结构体S1的大小为12字节 printf打印一下 struct S2 {char c1;//1字节放到0位置char c2;//1字节放到1位置int i;//4字节2不是4的整数倍放到4位置 };最终指向8位置是4的整数倍故S2的大小为8字节 struct S3 {double d;//8字节放到0位置处char c;//1字节放到8位置处int i;//4字节9不是4的整数倍放到12位置处最终指向16 };因为最大对齐数为816为8的整数倍所以结构体S3的大小就是16个字节 struct S4 {char c1;//1字节放到0位置处struct S3 s3;//16字节以8为对齐数放到8位置最后指向24位置处double d;//8字节放到24位置最终指向32位置 };32是最大对齐数8的整数倍所以结构体S4的大小就是32个字节 2、存在内存对齐的原因 在数据访问时对齐的内存只需要一次访问而不对齐的内存需要两次访问 结构体的内存对齐是拿空间来换取时间 我们可以将占用内存小的尽量集中在一起来节省空间 struct S1 {char c1;int i;char c2; }; struct S2 {char c1;char c2;int i; };3、修改默认对齐数 #pragma#include stdio.h #pragma pack(1)//设置默认对⻬数为1 struct S {char c1;//1字节存到0位置int i;//4字节默认对齐数为1小于4存到1位置char c2;//1字节存到5位置指向6 }; #pragma pack()//取消设置的对⻬数还原为默认 int main() {printf(%d\n, sizeof(struct S));return 0; }三、结构体传参 struct S {int data[100];int num; }; struct S s { {1,2,3,4}, 1000 }; void print(struct S* ps) {printf(%d\n, ps-num); } int main() {print(s);return 0; }结构体传参的时候最好传一个地址因为直接传一个结构体过去的话会造成时间和空间上不必要的开销导致性能下降 四、结构体实现位段 位段的成员可以是int , unsigned int , signed int ,char类型的 位段不跨平台可移植程序应该避免使用位段 struct S {char a : 3;char b : 4;char c : 5;char d : 4; }; struct S s { 0 }; int main() {s.a 10;s.b 12;s.c 3;s.d 4;printf(%d\n, s.a);printf(%d\n, s.b);printf(%d\n, s.c);printf(%d\n, s.d);}这里的a存入了10由于位段作用被存入a的二进制数为010用整数形式打印第一位为0为正数以第一位补位到32位即00000000 00000000 00000000 00000010即为2 这里的b存入了12由于位段作用被存入b的二进制数为1100用整数形式打印第一位为1为负数补1到11111111 11111111 11111111 11111100这是补码然后取反加一为原码即10000000 00000000 00000000 00000100即为-4 这里的c存入了3由于位段作用被存入c的二进制数为00011用整数形式打印第一位为0为正数以第一位补位到32位即00000000 00000000 00000000 00000011即为3 这里的d存入了4由于位段作用被存入a的二进制数为0100用整数形式打印第一位为0为正数以第一位补位到32位即00000000 00000000 00000000 00000100即为4 但是它空间的开辟是这样的 第一个数据二进制的01100010十六进制的0x62 第二个数据二进制的00000011十六进制的0x03 第三个数据二进制的00000100十六进制的0x04 可以看到我们的结构体中存放的数据是62 03 04 00与上述分析相符 跟结构体相比位段可以达到同样的效果并且可以很好的节省空间缺点是有跨平台的问题存在 因为地址的分配是以字节为单位的位段下的某些数据是没有地址的所以位段数据不能用指针来访问 今天的分享就到这了~
http://www.w-s-a.com/news/809554/

相关文章:

  • 2018网站建设行业广东网站seo
  • 网站后台加密云服务器2008做网站
  • dw制作一个环保网站模板下载吉安网站建设收费
  • 深圳珠宝网站设计北京高端网站建设优势
  • 合肥企业制作网站wordpress创建网站
  • 织梦网站开发兼职wordpress 中间截取缩略图
  • 南通制作网站旅游搭建网站
  • 专业做商铺的网站个人网页html模板完整代码
  • 什么网站做美食最好最专业关键词推广是什么意思
  • 自助建设网站软件网站导航网站可以做吗
  • 网站模板放哪长沙网站优化分析
  • 泉州网站建设价钱网站模板素材
  • 南通网站托管js建设网站外网
  • 成都企业网站公司wordpress内页模板
  • 58同城建网站怎么做wordpress评论显示数字ip
  • 免费制作论坛网站模板免费下载北京网站制作长沙
  • 旅游网网站建设网站如何自己做seo
  • 如何验证网站所有权做二手家具回收哪个网站好
  • 做哪种网站赚钱项目开发流程
  • 网站建设和网站网络推广网站建设软件定制
  • 站长工具网址查询全球云邮登陆网站
  • 宁波 住房和建设局网站网上发帖推广
  • 平面设计在线网站工业设计公司有哪些
  • 福州网站设计外包公司网站做的比较好
  • 如何设计网站首页网站开发综合技能实训心得体会
  • 用织梦做的网站好用吗w网站链接如何做脚注
  • 东莞做网站公司在哪哪里有网站培训的
  • 做宣传 为什么要做网站那重庆网站建设公司在线联系
  • 网站设计制作售价多少钱制作图片的软件是
  • 网站验证码目录简单带数据库的网站模版