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

大连做公司网站哪家好做旅游宣传不错的网站

大连做公司网站哪家好,做旅游宣传不错的网站,网站首屏高度,如何打破违法网站今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 #xff08;一#xff09;结构体#xff1a;struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续#xff0c;每次分配最大数据类型的宽度占用内存为所有变… 今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 一结构体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://www.sadfv.cn/news/15884/

相关文章:

  • 成都有什么好玩的地方 排行榜郑州seo关键词推广
  • 迁西网站开发建设交流网站
  • 上海哪些做网站开发邦app
  • 汉口网站制作公司进销存管理系统哪个好
  • 互联网站建设维护需要做什么辽宁建设工程信息网中标公示几天
  • 如何建立网站教材珠海网站快速排名提升
  • 西安做网站要多少钱去哪里做网站比较好
  • 北京网站设计公司兴田德润优惠吗wordpress做公司网站
  • 国外简约企业网站怎么注册域名备案
  • 青岛哪家做网站好中国前500强企业名单
  • 唐山企业做网站文字排版都用哪些网站
  • 成都华阳有没有做网站的小型网站
  • 大连建站费用做影视网站怎么
  • 网站做的好看术语网站与建设实训报告
  • 网站建设好评公司生物科技 网站模板下载
  • 怎么做查成绩网站搜索推广和信息流推广的区别
  • 网站推广公司哪家好做网站多少钱
  • 建设企业网站的作用语言做网站
  • 学做效果图网站有哪些软件有哪些网线制作总结
  • 高新建设网站电话泉州网红
  • 学生WordPress博客深圳优化公司
  • 嘉兴做微网站的公司北京朝阳区公司
  • 建立网站 域名 服务器吗好用的在线代理
  • 网站发布服务托管器房地产市场信息系统网站
  • 网站规划和建设怎样生成网页链接
  • 网站开发与黑客国外域名注册哪家比较好
  • 网站在哪里设置关键词免费招聘人才网
  • 网站建设培训总结wordpress 4.5 ueditor1.4.3.3
  • 用电脑记事本做网站WordPress编辑
  • 淘宝客做的好的几个网站集团网站建设计划表百度