vc++中结构体变量struct的设计

vc++中结构体变量struct的设计

ID:30790310

大小:135.38 KB

页数:9页

时间:2019-01-03

vc++中结构体变量struct的设计_第1页
vc++中结构体变量struct的设计_第2页
vc++中结构体变量struct的设计_第3页
vc++中结构体变量struct的设计_第4页
vc++中结构体变量struct的设计_第5页
资源描述:

《vc++中结构体变量struct的设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、前面的教程中我们讲解了数组(Array),它是一组具有相同类型的数据的集合。但在实际的编程过程屮,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:struct结构体名{结构体所包含的变量或数组};结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下

2、面的一个例子:9■1struetstu{2char*name;//姓名3intnum;//学号4intage;〃年龄5chargroup;//所在学习小组floatscore;//成绩6};7stu为结构体名,它包含了5个成员,分别是name、num^age^group>score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。注总大括号后面的分号;不能少,这是一条完整的语句。结构体也是一种数据类型,它rti程序员口己定义,可以包含多个其他类型的数据。像int、float,char等是由C语言木身提供的数据类型,不能再进行分拆

3、,我们称Z为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。结构体变量既然结构体是一种数据类型,那么就可以用它来定义变量。例如:structstustul,stu2;定义了两个变量stul和stu2,它们都是stu类型,都由5个成员组成。注意关键字struct不能少。stu就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。你也可以在定义结构体的同时定义结构体变量:将变量放在结构体定

4、义的最后即可。9■1structstu{2char*name;//姓名3intnum;//学号4intage;〃年龄5chargroup;//所在学习小组floatscore;//成绩6}stul,stu2;7如杲只需要stul.stu2两个变量,后面不需要再使用结构体名定义其他变量,那么在定义时也可以不给出结构体名,如下所示:91234567struct{//没有写stuchar*name;//姓名intnum;〃学号intage;//年龄chargroup;//所在学习小组floatscore;//成绩}stul,stu2;这样做书写简单,

5、但是因为没有结构体名,后面就没法用该结构体定义新的变暈。理论上讲结构体的各个成员在内存中是连续存储的,和数组非常类似,例如上面的结构体变量stul、stu2的内存分布如下图所示,共占用4+4+4+1+4二17个字节。namenumagegroupscore但是在编译器的具体实现中,各个成员之间可能会存在缝隙,对于stubstu2,成员变量group和score之间就存在3个字节的空白填充(见I、■图)。这样算来,stul、stu2其实占用了17+3二20个字节。namenumagegroupscore关于成员变量之间存在“裂缝”的原因,我们将在

6、《C语言和内存》专题中的《C语言内存对齐,提高寻址效率》一节中详细讲解。成员的获取和赋值12340678910111213141516结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。数组使用下标[]获取单个元素,结构体使用点号•获取单个成员。获取结构体成员的一般格式为:结构体变量名•成员名;通过这种方式可以获取成员的值,也可以给成员赋值:#includeintmain(){struct{char*name;//姓名intnum;//学号intage;〃年龄chargroup;//所在小组floatscore;//

7、成绩}stul;〃给结构体成员赋值stubname="Toni”;stul・num=12;stu1・age=18;stu1.group二'A';stu1・score=136・5;//读取结构体成员的值printf(z,%s的学号是%(1,年龄是%d,在紅组,今年的成绩是%.If!〃,stu1・name,stu1・num,stu1.age,stu1.group,stu1.score);return0;1819运行结果:Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!除了可以对成员进行逐一赋值,也可以在定义时整体赋值,例如:9■

8、1struct{2char*name;//姓名3intnum;〃学号4intage;//年龄chargroup;//所在小组5floatscore;/

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

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

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