欢迎来到天天文库
浏览记录
ID:40840926
大小:943.01 KB
页数:39页
时间:2019-08-08
《C自定义数据类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、自定义数据类型思考:请大家定义一个学生变量,能够描述你的姓名、学号、宿舍地址、联系电话、出生年月。在前面章节里所使用的数据(整型、字符、浮点型)是C++预先定义的基本数据类型,但是在有些时候,仅用这些基本数据很难描述清楚客观世界。在程序开发过程中,经常遇到要处理的对象用C++预先定义的基本数据类型不能全面描述的情况。C++允许我们自己定义数据类型,通过自定义数据类型来更好的描述客观世界。结构C++允许程序员使用结构这种自定义的数据类型来解决这个矛盾。通过结构,可以将C++的基本数据类型组合起来形成一个有机的整体来描述具体的对象。不论要描述
2、的对象有多么复杂,只需要把它的属性抽象出来,然后用C++的基本数据类型来描述,就可以把这个对象很好地描述清楚。结构的定义结构定义的一般形式是:struct结构名{数据类型 成员名1;数据类型 成员名2;…数据类型 成员名n;};前面提到的可以用于描述学生信息的结构定义如下:structStudent{intnID;charszName[20];charszAddr[100];charszBirthday[10];charszPhone[15];floatfScore;};//注意,“;”表示结构定义结束。在定义结构的成员时,成
3、员的数据类型可以是任何一个C++的基本数据类型,或者是自定义的数据类型。也就是说结构的成员可以是另外一个结构或者其他复杂的自定义的数据类型。通过这样的组合关系,C++可以用结构描述非常复杂的数据对象。在定义结构的成员时,成员的命名规则和普通变量的命名规则是一样的。值得注意的是,C++把struct关键字描述的内容当作了一种数据类型,当用struct关键字定义一个结构时,C++不会为这个结构分配内存。只有当用这种数据类型定义了变量时,C++才会为这个变量分配内存。结构的成员也可以是另外一个结构变量。如在前面关于学生基本信息的定义,可以用一个
4、结构来定义学生的出生日期,如:structDate//定义表示日期的结构{intnYear;intnMon;intnDay;};structStudent1{intnID;//整型成员charszName[20];//字符型成员//用结构Date定义的结构变量来表示出生日期DatedtBirthday;charszAddr[100];//字符型成员charszPhone[15];//字符型成员floatfScore;//浮点型成员};使用结构定义了结构之后,就可以用该结构定义相应的结构变量,C++会为这个结构变量分配内存。例如,前面已经定
5、义了Student结构,现在可以用如下的方式定义结构变量:Stucents;现在,C++已经为结构变量s分配了空间,但由于没有初始化s,s的各成员的值是随机的。初始化结构变量s可以有两种方法:结构变量初始化一种方法是在定义结构变量的同时进行初始化,如:Students={1,"李明","1989-10-15","解放路号","83647526",93.5};另一种方法是在定义了结构变量之后,通过访问结构成员的方法给结构成员赋初值。C++提供了点操作符“.”来访问结构成员,可以通过“结构变量名.成员名”的方式来读取结构成员的值或者为结构成员
6、赋值。/***例17-1定义和使用结构***/structStudent{intnID;charszName[20];charszAddr[100];charszPhone[15];floatfScore;};voidmain(){Students;s.nID=1;strcpy(s.szName,"李明");strcpy(s.szAddr,"解放路号");strcpy(s.szPhone,"83647526");s.fScore=93.5;cout<<"学生的学号是:"<7、Name<8、ar=1984;s1.dtBirthday.nMon=10;s1.dtBirthday.nDay=15;strcpy(s.szAddr,"解放路号");strcpy(s.szPhone,"83
7、Name<8、ar=1984;s1.dtBirthday.nMon=10;s1.dtBirthday.nDay=15;strcpy(s.szAddr,"解放路号");strcpy(s.szPhone,"83
8、ar=1984;s1.dtBirthday.nMon=10;s1.dtBirthday.nDay=15;strcpy(s.szAddr,"解放路号");strcpy(s.szPhone,"83
此文档下载收益归作者所有