- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Structures 使用结构体究竟有什么好处? 从基本数据类型、复合数据类型到抽象数据类型 计算机本身是没有数据类型的概念的 内存里存储的内容,你认为它代表什么,它就代表什么 高级语言设计了基本数据类型:整型、浮点型、字符型等。不同的语言也会定义不同的基本类型 基本数据类型并不能方便地解决所有问题 复合数据类型是基本数据类型迭代派生而来 典型的代表就是“结构”,数组、指针也可算作此类 抽象数据类型(ADT)在复合数据类型的基础上增加了对数据的操作 抽象数据类型进而进化为“类” 这是一个跨时代的进步 一个问题 在程序里表示一个人(姓名、年龄、性别、身高、体重……),怎么表示? char name[12];unsigned int age;char sex; 想表示多个人呢? 定义多个数组?(有些搞笑了) C语言的解决办法 struct person{ char name[12]; unsigned int age; char sex;}; struct person是一个类型 struct person students[4]; students[0].namestudents[0].agestudents[0].sex 它们都是变量,一般称为结构的成员变量 结构(Structure)的内存占用 一个结构变量的成员变量在内存中是相邻的 整个结构变量的将占用多少内存呢? 是所有成员变量的内存总和吗? 我们可以用sizeof来获得结构的大小 事实上,结构所占的实际空间一般是按照机器字长对齐的 不同的编译器、不同的平台,对齐方式会有变化,不过一般的编译器都可以设定按照多大对齐 sizeof到底是什么? 它是一个C语言的关键字,并不是函数 可以用两种形式使用 sizeof(表达式) 一般都使用sizeof(变量名) sizeof(类型) 求出的结果为表达式值所属类型或者类型占用的字节数 struct类型的特点 一个普通的类型 所以可以定义该类型的变量、数组、指针…… 它的成员可以是任意类型 基本类型、数组、指针、结构…… 可以做函数的参数类型和返回值类型 struct类型的变量 可以互相赋值 所以做为函数的参数时,是传值调用 可以 不可能参与运算 它的成员个个也都是如假包换的变量 面向对象和数据库是struct的思想的发展 结构指针 struct point{ int x; int y; }; struct point pt;struct point* ppt; ppt = pt; 怎样通过ppt访问pt的成员? (*ppt).x = 0; ppt-x = 0; /* 更常用 */ 思考题 struct point{ int x; int y;};struct rect{ struct point pt1; struct point pt2;}; struct rect rt, *rp=rt; 下面表达式哪些合法? rt.pt1.x (*rp).pt1.x rp-pt1.x rt-pt1.x 上面合法的表达式都是等价的吗? 再思考 下面的结构什么意思? struct something{ struct something obj1; struct something obj2;} 下面的的呢? struct something{ char name[10]; struct something* pOtherObj;} 位字段 想表达人的姓名、性别、肤色、出生年、月、日,都定义什么类型的成员变量? struct person{ char name[12]; char sex; char color; int year; char month; char day; }; 这样有很多的空间浪费,比如month只可能取值1-12 位字段 struct person{ char name[12]; unsigned int sex : 2; unsigned int color : 2; int year; unsigned int month : 4; unsigned int day : 5; }; 调整成员顺序可以让结构更紧凑 每个位段都可以当作一个无符号整型数使用 表达范围当然受限,而且当然不能取地址 C语言的核心学习到此结束 32个关键字和围绕它们的语法、符号构成了C语言的核心 26个字母以及围绕它们的构词法、语法构成了英语的核心 对C语言核心的讲述并非面面俱到,而是紧抓核心的核心,在理解了核心的核心基础上讲解各种常用和有代表性的外延。一些比较少见,或者很容易理解的,要么一带而过,要么干脆没有
您可能关注的文档
- 2014人教版年级下语文第一课《找春天》.ppt
- 2014最新外版七年级下册英语期末测试题.doc
- 2015.1海初三期末语文试题及答案.doc
- 2015-206学年河北省衡水市冀州中学高一下学期开学化学试卷(解析版).doc
- 2015年第一期期末七年级试卷.doc
- 2015年中考习标点符号与病句的辨析、修改.doc
- 2015萍乡学大学语文考试大纲.doc
- 2015仁爱英九年级Unit2语言点归纳及练习.doc
- 2015浙大远教育英语1第三次在线作业.doc
- 2015浙大远教育英语1第一次在线作业.doc
- 2026中国建设银行总部校园招聘120人备考题库有答案详解.docx
- 2026中国邮政储蓄银行厦门分行校园招聘备考题库附答案详解(黄金题型).docx
- 2026中国民生银行博士后科研工作站度博士后研究人员招聘备考题库及答案详解(最新).docx
- 2026中国建设银行总部秋季校园招聘130人备考题库完整答案详解.docx
- 2026中国建设银行建信理财秋季校园招聘9人备考题库(深圳)附答案详解(综合题).docx
- 2025四川雅安市招聘聘用制审判辅助人员23人备考题库及答案1套.docx
- 2025下半年广东珠海市纪委监委招聘所属事业单位工作人员12人备考题库必考题.docx
- 2026福建泉州市面向哈尔滨工业大学选优生选拔引进40人备考题库最新.docx
- 2026国家知识产权局专利局专利审查协作北京中心专利审查员招聘100人备考题库附答案.docx
- 2025吉林大学白求恩第一医院生物信息学实验室招聘备考题库附答案.docx
原创力文档


文档评论(0)