哈工大_C语言06_Struct

哈工大_C语言06_Struct

ID:44374631

大小:628.00 KB

页数:18页

时间:2019-10-21

哈工大_C语言06_Struct_第1页
哈工大_C语言06_Struct_第2页
哈工大_C语言06_Struct_第3页
哈工大_C语言06_Struct_第4页
哈工大_C语言06_Struct_第5页
资源描述:

《哈工大_C语言06_Struct》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C程序设计语言第6章结构从基本数据类型、复合数据类型到抽象数据类型计算机本身是没有数据类型的概念的内存里存储的内容,你认为它代表什么,它就代表什么高级语言设计了基本数据类型:整型、浮点型、字符型等。不同的语言也会定义不同的基本类型基本数据类型并不能方便地解决所有问题复合数据类型是基本数据类型迭代派生而来典型的代表就是“结构”,数组、指针也可算作此类抽象数据类型(ADT)在复合数据类型的基础上增加了对数据的操作抽象数据类型进而进化为“类”这是一个跨时代的进步一个问题在程序里表示一个人(姓名、年龄、

2、性别、身高、体重……),怎么表示?charname[12];unsignedintage;charsex;想表示多个人呢?定义多个数组?(有些搞笑了)C语言的解决办法structperson {charname[12];unsignedintage;charsex; };structperson是一个类型structpersonstudents[4];students[0].name students[0].age students[0].sex它们都是变量,一般称为结构的成员变量结构(Stru

3、cture)的内存占用一个结构变量的成员变量在内存中是相邻的整个结构变量的将占用多少内存呢?是所有成员变量的内存总和吗?我们可以用sizeof来获得结构的大小事实上,结构所占的实际空间一般是按照机器字长对齐的不同的编译器、不同的平台,对齐方式会有变化,不过一般的编译器都可以设定按照多大对齐sizeof到底是什么?它是一个C语言的关键字,并不是函数可以用两种形式使用sizeof(表达式)一般都使用sizeof(变量名)sizeof(类型)求出的结果为表达式值所属类型或者类型占用的字节数struct

4、类型的特点一个普通的类型所以可以定义该类型的变量、数组、指针……它的成员可以是任意类型基本类型、数组、指针、结构……可以做函数的参数类型和返回值类型struct类型的变量可以互相赋值所以做为函数的参数时,是传值调用可以&不可能参与运算它的成员个个也都是如假包换的变量面向对象和数据库是struct的思想的发展结构指针structpoint {intx;inty; };structpointpt;structpoint*ppt;ppt=&pt;怎样通过ppt访问pt的成员?(*ppt).x=0;pp

5、t->x=0;/*更常用*/思考题structpoint {intx;inty; };structrect{structpointpt1;structpointpt2; };structrectrt,*rp=&rt;下面表达式哪些合法?rt.pt1.x(*rp).pt1.xrp->pt1.xrt->pt1.x上面合法的表达式都是等价的吗?再思考下面的结构什么意思?structsomething {structsomethingobj1;structsomethingobj2; }下面的的呢?st

6、ructsomething {charname[10];structsomething*pOtherObj; }位字段想表达人的姓名、性别、肤色、出生年、月、日,都定义什么类型的成员变量?structperson {charname[12];charsex;charcolor;intyear;charmonth;charday; };这样有很多的空间浪费,比如month只可能取值1-12位字段structperson {charname[12];unsignedintsex:2;unsigned

7、intcolor:2;intyear;unsignedintmonth:4;unsignedintday:5; };调整成员顺序可以让结构更紧凑每个位段都可以当作一个无符号整型数使用表达范围当然受限,而且当然不能取地址联合(Union)unionu_tag{intival;floatfval;char*sval; }u;基本上和struct一样u.ival、u.fval、u.sval处于同样的地址sizeof(unionxxx)取决于占空间最多的那个成员变量定义自己的类型名structperso

8、nstudent;/*Itworks*/personstudent;/*Canthiswork?*/structtagPerson{ ……;……; };typedefstructtagPersonperson; personstudent;/*Itworks!*/typedef为一种类型定义一个同义词C语言的核心学习到此结束教材P164列出的32个关键字和围绕它们的语法、符号构成了C语言的核心26个字母以及围绕它们的构词法、语法构成了英语的核心本课程对C语言核心的讲述并非面面俱到,而是紧抓核心的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。