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

大连网站设计九首选仟亿科技怎样创建网站和网页

大连网站设计九首选仟亿科技,怎样创建网站和网页,北京装修公司排名十强,网店美工工资今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 欢迎加入嵌入式学习群#xff1a;559601187 #xff08;一#xff09;结构体#xff1a;struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续#xff0c;… 今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 欢迎加入嵌入式学习群559601187 一结构体struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续每次分配最大数据类型的宽度占用内存为所有变量的总大小(注意字节对齐问题) 1.2 定义 1.先定义结构体类型再说明结构体变量 struct stu {char *name; //姓名int num; //学号int age; //年龄float score; //成绩 }; struct stu student;上面的程序使用strcuct关键字定义了一个结构体名为stu的结构体类型。和定义变量一样声明一个结构体类型变量可以使用数据类型 变量名 的形式。 struct stu student表示定义了一个变量名为stduent类型为stu的结构体。该结构体含有4个成员name、num、age、score 注意大括号后面的分号;不能少这是一条完整的语句。 2.定义结构体类型的同时定义结构体变量 struct stu {char *name; //姓名int num; //学号int age; //年龄float score; //成绩 }student;在定义时直接声明结构体变量只需要将结构体变量名放在花括号后面并加上分号即可。 3.直接说明结构体变量 struct {char *name; //姓名int num; //学号int age; //年龄float score; //成绩 } student;这种定义方式并不常用这样做书写虽然简单但是因为没有结构体名后面就没法用该结构体定义新的变量。 4.typedef重定义 typedef struct {char *name; //姓名int num; //学号int age; //年龄float score; //成绩 } STU; STU student;这种方式比较常见我们使用typedef重定义结构体为STU这里STU就是此结构体类型可以用STU去定义结构体变量 1.3 初始化 1.在定义结构体变量的时候全部初始化 struct stu {char *name; //姓名int num; //学号int age; //年龄float score; //成绩 }student{“ha”,1234,56,99};2.定义完结构体变量后之后只能单个赋值 struct stu {char *name; //姓名int num; //学号int age; //年龄float score; //成绩 }; struct stu student; student.nameha; student.num1234; student.age56; student.score99;1.4 调用 结构体变量.成员结构体变量名点(’.’)成员就可以调用了 1.5 结构体指针 当一个指针变量指向结构体时我们就称它为结构体指针。C语言结构体指针的定义形式一般为 struct 结构体名 *变量名;//结构体 struct stu{char *name; //姓名int num; //学号int age; //年龄float score; //成绩 } stu1 { hah, 12, 18, 23, 136.5 }; //结构体指针 struct stu *pstu stu1;注意结构体变量名和数组名不同数组名在表达式中会被转换为数组指针而结构体变量名不会无论在任何表达式中它表示的都是整个集合本身要想取得结构体变量的地址必须在前面加所以给 pstu 赋值只能写作 1.6 获取结构体成员 通过结构体指针可以获取结构体成员一般形式为 (*pointer).memberName或者 pointer-memberName第一种写法中.的优先级高于*(pointer)两边的括号不能少。如果去掉括号写作pointer.memberName那么就等效于*(pointer.memberName)这样意义就完全不对了。 第二种写法中-是一个新的运算符习惯称它为“箭头”有了它可以通过结构体指针直接取得结构体成员这也是-在C语言中的唯一用途。 1.7 结构体内存分析 注意点 给整个结构体变量分配储存空间和数组一样,从内存地址比较大的开始分配给结构体变量中的属性分配储存空间也和数组一样,从所占内存地址比较小的开始分配定义结构体类型不会分配储存空间,只有定义结构体变量的时候才会分配储存空间 结构体在分配内存的时候,会做一个内存对齐的操作会先获取所有属性中占用内存最大的属性的字节数然后在开辟出最大属性字节的内存给第一个属性,如果分配给第一个属性之后还能继续分配给第二个属性,那么就继续分配给第二个属性如果分配给第一个属性之后,剩余的内存不够分配给第二个属性了,那么会再次开辟最大属性的内存,再次分配 依次类推 #include stdio.hint main(){//定义结构体struct Person{char name; // 1 个节点 //开辟4个字节 char 占用1个int age; // 4个字节 // 剩余三个 不够int 再开辟4个字节int money; // 4个字节 // 再开辟4个字节};struct Person p; // 所以p 444printf(sizeof(p) %i\n,sizeof(p)); // 12个字节return 0; }二共用体联合体union 2.1概念 所有变量共用一段空间每次分配按最大长度进行分配是一种构造数据类型同一时刻只能保存一个成员的值不能直接引用共用体变量名 2.2定义 它的定义和结构体一样分为先定义共用体再说明共用体变量、在定义共用体的同时说明共用体变量、直接说明共用体变量 union 共用体名{成员列表 };示例 //先定义共用体再说明共用体变量 union data{int n;char ch;double f; }; union data a, b, c;2.3 引用 和结构体一样通过共用体变量名 . 成员名 union data{int n;char ch;double f; } a, b, c; a.n3;关于共用体的详细介绍可以看下这篇文章C语言共用体C语言union用法详解讲到共用体这里要说明一下大小端模式的问题。 小端模式低地址存放低字节高地址存放高字节 大端模式低地址存放高字节高地址存放低字节 三枚举enum 3.1 概念 作用列举出所有的可能性增强代码的可阅读性枚举成员都是常量不能再对已经定义好的枚举常量赋值 3.1 定义 enum 枚举名 { 枚举变量 };示例 enum week { Mon, Tues, Wed, Thurs, Fri, Sat, Sun}; typedef enum { Mon, Tues, Wed, Thurs, Fri, Sat, Sun }Date; 枚举是一种类型通过它可以定义枚举变量 Date a,b,c我们也可以给每个名字都指定一个值 enum week{ Mon 1, Tues 2, Wed 3, Thurs 4, Fri 5, Sat 6, Sun 7 };更为简单的方法是只给第一个名字指定值 enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun };这样枚举值就从 1 开始递增跟上面的写法是等效的。 也可以在定义枚举类型的同时定义变量 enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c;有了枚举变量就可以把列表中的值赋给它 enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun }; enum week a Mon, b Wed, c Sat;或者 enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } a Mon, b Wed, c Sat;特点可以在定义枚举时给成员赋值被赋值的成员往后依次增加1也可以在中间改变某一个成员的值。 3.1 引用 直接使用就行需要注意的是**枚举列表中的数据作用范围是全局的不能在定义与它们名字相同的白能量Mon、Tues、Wed 等都是常量不能对它们赋值只能将它们的值赋给其他的变量。 示例 #include stdio.h int main(){enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;scanf(%d, day);switch(day){case 1: puts(Monday); break;case 2: puts(Tuesday); break;case 3: puts(Wednesday); break;case 4: puts(Thursday); break;case 5: puts(Friday); break;case 6: puts(Saturday); break;case 7: puts(Sunday); break;default: puts(Error!);}return 0; }Mon、Tues、Wed 这些名字都被替换成了对应的数字。这意味着Mon、Tues、Wed 等都不是变量它们不占用数据区常量区、全局数据区、栈区和堆区的内存而是直接被编译到命令里面放到代码区所以不能用取得它们的地址。这就是枚举的本质。 本文章仅供学习交流用禁止用作商业用途文中内容来水枂编辑如需转载请告知谢谢合作 微信公众号zhjj0729 微博文艺to青年
http://wiki.neutronadmin.com/news/429743/

相关文章:

  • 旅游网站开发流程浅谈博星卓越网站建设
  • 设计素材网站图片网站运营需要哪些人员
  • 做公司网站需要的材料有哪些it网站制作策划
  • 普通电脑怎么做网站服务器吗成都设计公司logo
  • 渭南免费做网站公司seo外包公司兴田德润
  • wordpress首页调用文章多张图片锦绣大地seo官网
  • 企业网站备案 过户网站建设从零开始教程
  • 简单网站html5网站地址
  • 微网站开发手机模拟器成品网站1688入门网
  • 微网站开发项目合作协议广州网站建设找哪家
  • 汉鼎网站建设广西建设监理协会网站
  • 关于《大学物理》网站资源建设的思路深圳十大装饰公司名单
  • 公司给别人做的网站违法的吗wordpress顶插件
  • 手机版网站建设开发网站哪家公司好
  • 百度验证网站做自媒体那几个网站好点
  • 哈尔滨网站建设优化公司wordpress百度
  • 营销型网站建设范文wordpress首页压缩插件
  • 电子商务成功网站的案例吉祥物设计网站
  • 电子政务网站开发创业给别人做网站怎么样
  • 免费的网站登录模板下载做网站需要公司吗
  • 外包公司 网站建设 上海预约做家庭清洁的网站
  • 网站后期维护包括wordpress 摘要省略号
  • 网站开发前后台整个流程大航母网站建设案例
  • 男女第一次做网站爱想在百度上推广怎么做
  • 四川高速公路建设开发集团有限公司网站成都网站制作公司dedecms
  • 网站开发承包合同网站运营团队
  • 网站开发用什么语言最多免费创建网站的平台
  • 企业网站的建设要注意哪些方面电脑网页尺寸一般是多少
  • 资讯网站域名选购智能网站
  • 接网站开发的公司江苏国龙翔建设网站.