设为首页 加入收藏

TOP

6.3 结构(3)
2013-10-07 00:48:19 来源: 作者: 【 】 浏览:51
Tags:6.3 结构

6.3 结构(3)

3.开始定义main()函数并创建一个book类型的变量。

  1. int main() {  
  2.     book book1; 

在定义了book结构之后,就可以创建一个book类型的变量了,就像我们对待任何其他变量那样。

4.提示用户输入图书的书名并把它存入这个结构。

  1. std::cout << "Enter the book's title:\n"

在绝大多数场合,结构均可以像任何其他变量那样使用。在这里,我们读入了一本书的书名(如图6-18所示),并把它保存到book结构的title成员里。

 
图6-18 提示用户输入一本图书的书
名并把它存入book结构
5.重复步骤4,依次读入图书的作者和出版日期。
  1. std::cout << "Enter the book's author:\n";  
  2. std::getline(std::cin, book1.author);  
  3. std::cout << "Enter the book's publication year: ";  
  4. std::cin >> book1.year; 

每项用户输入都有它们各自的提示消息(如图6-19所示)。因为year是一个整数而不是一个字符串,所以可以利用std::cin来读入它。有关如何读取用户输入的详细讨论见第4章。

 
图6-19 将存放在book结构里
的其他信息也来自用户
6.把用户输入的信息回显给用户。
  1. std::cout << "\nThe following information has been received..." 
  2. << "\nTitle: " << book1.title  
  3. << "\nAuthor: " << book1.author  
  4. << "\nYear: " << book1.year << "\n\n"

在把所有的输入信息都保存到book结构里以后,我们将把它们回显给用户进行确认。请注意,这里使用了structureVariableName.structureMemberName语法来访问该结构的各个成员。

7.完成main()函数。

  1.     std::cin.ignore(100, '\n');  
  2.     std::cout << "Press Enter or Return to continue.\n";  
  3.     std::cin.get();  
  4.     return 0;  

8.把这个文件保存为books.cpp,然后编译并运行这个程序(如图6-20所示)。

 
图6-20 在得到所有输入之后,这个示例程
序将把图书信息回显给用户进行确认

"提示

要想理解"对象"这个概念,必须先熟悉"结构"概念并掌握在程序里使用结构的办法。结构是一种包含多个子变量的变量定义。类(class)是一种包含子变量和函数(也叫做方法)的变量定义。

如果在结构里使用了string类型,有些编译器会发出警告消息。

C语言里,必须使用如下所示的更正规的语法才能创建一个structureName类型的变量,C++(www.cppentry.com)的要求没有这么严格。

  1. struct structureName myVar; 

C++(www.cppentry.com)允许程序员在定义一个结构之后立刻创建一些该类型的变量,如下所示:

  1. struct person {  
  2.     unsigned short age;  
  3.     char gender;  
  4. } me, you; 

同样,程序员还可以同时声明并初始化结构变量,如下所示:

  1. struct person {  
  2.     unsigned short age;  
  3.     char gender;  
  4. } me = { 40, 'M'}; 

还可以创建一个以结构为元素的数组:

  1. person family[5]; 

如果想指向某结构数组中的特定元素的特定成员,需要依次写出该结构数组的名字、它的下标、一个句点(.)和这个成员的名字:

  1. family[3].age = 4;  
  2. family[2].gender = 'F'

联合和其他复杂类型

在C++(www.cppentry.com)里还有许多其他的类型是我们还没有提到的。除对象以外,我们已经介绍了C++(www.cppentry.com)中最重要的数据类型,对象将在下一章讲述。到目前为止,你已经见过整数、实数、字符、字符串、数组、指针和结构。我们将在第13章介绍一种远优于数组的vector(向量)类型。现在,我们想简要地介绍另一种类型:联合(union)。

联合与结构有很多相似之处。联合也可以容纳多种不同类型的值,但它每次只能存储这些值中的某一个。比如,如果要定义一个变量来存放某种密码--它可以是你母亲的闺名、你身份证的最后4位数字或是你养的宠物的名字,联合将是一个不错的选择:

  1. union id {  
  2.     std::string maidenName;  
  3.     unsigned short ssn;  
  4.     std::string pet;  
  5. }; 

在定义了这个联合之后,就可以像下面这样创建一个该类型的变量了:

  1. id michael; 

接下来,可以像对结构成员进行赋值那样对联合里的成员进行赋值,使用同样的句点语法:

  1. michael.maidenName = "Colbert"

这条语句将把值Colbert存入michael联合的maidenName成员里。如果再执行下面这条语句:

  1. michael.pet = "Trixie"

这个联合将把新值Trixie存入michael联合的pet成员,并丢弃maidenName成员里的值--不再保存刚才的Colbert。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.4 再论用户定义函数 下一篇6.3 结构(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: