6.3 结构(1)
C语言和C++(www.cppentry.com)有许多共同的优美之处,其中之一是程序员不必受限于这两种语言自带的数据类型,我们完全可以根据具体情况定义一些新的数据类型并创建新类型的变量。事实上,这个概念一直贯穿于C++(www.cppentry.com)的核心:对象。但首先,一个比较简单的例子是结构。结构(structure)是一种由程序员定义的、由其他变量类型组合而成的数据类型。定义一个结构的基本语法是:
- struct structurename {
- type varName;
- type varName;
-
- };
请注意,结构的定义必须以一个右花括号和一个分号结束。
当需要处理一些具有多种属性的数据时,结构往往是很好的选择。比如,你正在编写一个员工档案管理程序。每位员工有好几种特征,例如姓名、胸牌号、工资,等等。我们可以把这些特征定义为一个如下所示的结构:
- struct employee {
- unsigned short id;
- std::string name;
- float wage;
- };
C++(www.cppentry.com)对一个结构所能包含的变量的个数没有限制,那些变量通常称为该结构的成员,它们可以是任何一种合法的数据类型。
在定义了一个结构之后,就可以使用如下所示的语法来创建该类型的变量了:
- structureName myVar;
- employee e1;
在创建出一个结构类型的变量之后,就可以通过如下所示的语法引用它的各个成员了:
- myVar.membername = value;
假设已经创建了一个employee类型的变量e1,你就可以像下面这样对这个结构里的变量进行赋值:
- e1.id = 40;
- e1.name = "Charles";
- e1.wage = 12.34;
如果在创建一个结构类型的新变量时就已经知道它各有关成员的值,还可以在声明新变量的同时把那些值赋给它的各有关成员:
- employee el = {40, "Charles", 12.34};
在何处定义一个结构将影响到可以在何处使用它。如果某个结构是在任何一个函数之外和之前定义的,就可以在任何一个函数里使用这种结构类型的变量。如果某个结构是在某个函数之内定义的,则只能在这个函数里使用这种类型的变量。
在接下来的示例程序里,我们将创建一个结构来代表一本图书,该结构所包含的信息包括图书的书名、它的作者和出版日期。
指向结构的指针
在C++(www.cppentry.com)里,指针可以指向结构,就像它可以指向任何其他变量那样。但接下来的问题是,怎样才能通过指针解引用该结构里的各个成员(或者说访问存放在结构里的各个值)。先从结构的定义开始:
- struct person {
- unsigned short age;
- char gender;
- };
接下来,创建一个person类型的变量:
- person me = {40, 'M'};
现在,创建一个指向该结构的指针:
- person *myself = &me;
因为指针的类型必须与由它保存其地址的变量的类型相一致,所以myself指针的类型也是person。我们在声明它的同时把它赋值为&me--结构变量me在内存里的地址。
【责任编辑:
云霞 TEL:(010)68476606】