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

推特登陆 网站建设企业官网运营

推特登陆 网站建设,企业官网运营,整合营销传播的概念,百度推广需要自己有网站吗文章目录#x1f4ec;结构体的声明#x1f50e;1.结构的基础知识#x1f50e;2.结构的声明#x1f50e;3.特殊的声明#x1f50e;4.结构的自引用#x1f50e;5.结构体变量的定义和初始化#x1f50e;6.结构体内存对齐#x1f50e;7.修改默认对齐数#x1f50e;8.结构体… 文章目录结构体的声明1.结构的基础知识2.结构的声明3.特殊的声明4.结构的自引用5.结构体变量的定义和初始化6.结构体内存对齐7.修改默认对齐数8.结构体传参结构体的声明 1.结构的基础知识 结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量。 2.结构的声明 如描述学生 //定义学生类型 struct Stu {//成员变量char name[20];int age;float weight; }s4,s5,s6;//全局变量int main() {struct Stu s1;//局部变量struct Stu s2;struct Stu s3;return 0; }3.特殊的声明 在声明结构的时候可以不完全的声明 匿名结构体类型 举个例子 //匿名结构体类型 struct {char c;int a;double d; }s1;struct {char c;int a;double d; }a[20],*p;上面的两个结构在声明的时候省略掉了结构体标签tag ❓问题来了 在上面代码的基础上下面的代码合法吗 p s1; 编译器会把上面的两个声明当成完全不同的两个类型 所以是非法的 4.结构的自引用 在数据的存储中可以使用顺序表的形式对数据进行存放 顺序表是计算机内存储存数据的一种方式 即用一组地址连续的存储单元依次存储线性表中的各个元素 而除了顺序表以外还可以使用非顺序的形式的链表的方式对数据进行存储 即使用不同的地址分别对数据进行存储链表内的各个数据称为 “ 结点 ” 当需要使用或查找某个数据时只需找到最初的结点即可访问需要访问的数据 链表与顺序表都是以线性的方式对数据进行存储 若是使用结构体如何创建一个简单的链表 在结构中包含一个类型为该结构本身的成员是否可以呢 //错误示范 struct Node {int data;struct Node next; }; 这样是否可以呢 如果可以那sizeofstruct Node是多少呢 上面的代码为创建一个结构体并对结构体进行自引用达到通过一个数据访问下一个数据。 若是如此进行编译在结构体内部的结构体变量还存在着一个结构体周而复始程序将会像死递归一样不停调用该结构体 故该段代码为错误示范✖️。 正确的自引用方法✅ struct Node {int data;//4struct Node* next;//4/8 };int main() {struct Node n1;struct Node n2;n1.next n2;return 0; }5.结构体变量的定义和初始化 请看代码1 struct S {int a;char c; }s1;struct S s3;struct B {float f;struct S s; };int main() {struct S s2 { 100,q };struct S s3 { .c r,.a 2000 };struct B sb { 3.14f,{200,w} };printf(%f,%d,%c\n, sb.f, sb.s.a, sb.s.c);return 0; } 请看代码2 struct S {char name[100];int* ptr; };int main() {int a 100;struct S s { abcdef,NULL };return 0; }6.结构体内存对齐 在声明结构体的时候往往不同的结构体成员不同结构体的大小也不同若是存在以下的结构体他们相应的大小是多少 struct S1 {int a;char c; };struct S2 {char c1;int a;char c2; };struct S3 {char c1;int a;char c2;char c3; };int main() {printf(%d\n, sizeof(struct S1));printf(%d\n, sizeof(struct S2));printf(%d\n, sizeof(struct S3));return 0; }答案会是什么呢 5 6 7 那为什么和预想中的结果不一样呢 首先得掌握结构体的对齐规则 第一个成员在与结构体变量偏移量为0的地址处。 其他成员变量要对齐到某个数字对齐数的整数倍的地址处。 对齐数 编译器默认的一个对齐数与该成员大小的较小值。 VS 中默认的值为8 Linux 中没有默认对齐数对齐数就是成员自身的大小 结构体总大小为所有成员的对齐数中最大对齐数每个成员变量都有一个对齐数的整数倍。如果不够则浪费空间对齐。 如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处结构体的整体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 如果嵌套了结构体,嵌套的结构体成员要对齐自己成员中的最大对齐数的整数倍处 整个结构体大小,必须是最大对齐数的整数倍,最大对齐数包含嵌套的结构体成员中的对齐数 在这里我们可以使用offsetof宏来看一下各个成员的偏移量使用offsetof求偏移量时应包括头文件 stddef.h #includestddef.hstruct S {char c;int a; };int main() {struct S s { 0 };printf(%d\n, offsetof(struct S, c));printf(%d\n, offsetof(struct S, a));return 0; }我们再看一个 struct S3 {double d;char c;int i; };int main() {printf(%d\n, sizeof(struct S3));return 0; }在上段代码的基础上我们再来一个 struct S3 {double d;char c;int i; };struct S4 {char c1;struct S3 s3;double d; };int main() {printf(%d\n, sizeof(struct S4));return 0; }如果嵌套了结构体,嵌套的结构体成员要对齐自己成员中的最大对齐数的整数倍处 整个结构体大小,必须是最大对齐数的整数倍,最大对齐数包含嵌套的结构体成员中的对齐数 为什么存在内存对齐? 1.平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常. 2.性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐; 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问. 总体来说: 结构体的内存对齐是拿空间来换取时间的做法 在设计结构体的时候,我们既要满足对齐,又要节省空间,如何做到: 让占用空间小的成员尽量集中在一起 struct S1 {char c1;int i;char c2; }; struct S2 {char c1;char c2;int i; };S1和S2类型的成员一模一样,但是S1和S2所占空间的大小有了一些区别 7.修改默认对齐数 使用 #pragma 这个预处理指令,可以改变我们的默认对齐数 请看代码与注释 #pragma pack(8)//设置默认对齐数为8struct S {char c1;int i;char c2; }; #pragma pack()//取消设置的默认对齐数还原为默认结论: 结构在对齐方式不合适的时候,我们可以自己更改默认对齐数 8.结构体传参 struct S {int data[1000];int num; };struct S s { {1,2,3,4},1000 }; //结构体传参 void printf1(struct S s) {printf(%d\n, s.num); } //结构体地址传参 void printf1(const struct S* ps) {printf(%d\n, ps-num); }int main() {print1(s);//传结构体print2(s);//传地址return 0; }print2 相比于 print1 更好一些 原因: 函数传参的时候,参数时需要压栈,会有时间和空间上的系统开销. 如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降. 结论: 结构体传参的时候,要传结构体的地址. 总结 以上就是 自定义类型结构体 的内容啦 本文章所在【C语言知识篇】专栏感兴趣的烙铁可以订阅本专栏哦 前途很远也很暗但是不要怕不怕的人面前才有路。 小的会继续学习继续努力带来更好的作品 创作写文不易还多请各位大佬uu们多多支持哦
http://www.hkea.cn/news/14411623/

相关文章:

  • 五个h5制作网站网站制作中需要注意的地方
  • 做网站先做母版页wordpress表格边框
  • 中山建设公司网站wordpress调用关键词
  • 用asp做网站需要准备什么深圳宝安建设工程交易中心
  • 品牌做网站还是appwordpress忘记用户名
  • 网站做全局搜索分众传媒电梯广告价格表
  • 西丽做网站包装策划与设计专业
  • 如何开通自己的网站html制作电影网站
  • 电子商务网站的分类朋友圈推广一天30元
  • 湖南网站建设公司 地址磐石网络php彩票网站开发
  • 销售产品做单页还是网站中国建设信息化期刊官网
  • 怎么在国外建网站专业有哪些
  • 大朗网站制作dede做电影网站
  • 动漫做羞羞的网站广州越秀区租房子多少钱一个月
  • 一女被多男做的视频网站中国建筑网官网查询证书
  • 外贸网站谷歌推广购物网站线下推广方案
  • 怎么去建设微信网站无锡网站制作那些
  • 莱芜市城乡建设局网站推广运营工作内容
  • 做电商网站都需要学什么软件网站运维公司
  • 织梦手机端网站怎么做服务专业公司网站建设服务
  • 广州网站的优化wordpress 管理员权限设置密码
  • 建设一个视频网站的成本推荐几个响应式网站做参考
  • 昆明网站建设公司_四川九江龙钢结构网架公司
  • 网站功能简介怎样申请电子邮箱
  • 杭州 高端网站定制响应的网站
  • 注册网站空间网站建设应解决的问题
  • 广告联盟建设个人网站镇江专业网站建设
  • phpcmsv9手机网站网络维护费计入什么科目
  • 提供做pc端网站网络推广方法有哪些
  • 九度互联网站制作效果企业网站小程序源码