第6章 复杂的数据类型
在前面的学习里,处理的数据都属于"简单的"数据类型,这体现在整数、浮点数、字符等数据类型的变量每个只能存储一个标量值,即单个值。本章将要介绍的复杂数据类型的共同特点是,每个变量均可以存储多项信息。本章内容是第7章的基础,第7章将讲解复杂的C++(www.cppentry.com)数据类型中最重要的一个:对象。
本章将讨论三种数据类型。首先是数组,然后是指针(一种更加重要和抽象的数据类型),最后是结构(它的用法和用途可以让大家对面向对象的编程(www.cppentry.com)技术有基本的印象)。在本章的末尾,我们将回到用户定义函数这个话题,介绍如何在函数里使用这几种复杂的C++(www.cppentry.com)数据类型作为输入参数。
6.1 数组(1)
数组是许多种程序设计语言的重要组成部分,在C程序里经常会用到它们。正如本章开篇介绍的,诸如整数和浮点数之类的数据类型的变量每个只能存储一个值。数组的优点在于,一个数组可以把许多个值存储在同一个变量名下。
数组仍需要被声明为某一种特定的类型:数组可以用来存储浮点数、字符或整数,但不能把不同类型的数据混杂保存在同一个数组里。下面是数组的声明语法:
- type name[x];
其中type代表变量的类型,name是数组变量的名字(仍须遵守与其他变量相同的命名规则),x是该数组所能容纳的数据项的个数(数组中的每一项数据称为一个元素)。下面这行代码创建了一个能够容纳10个浮点数的数组: - float myArray[10];
因为一个数组变量包含多个值,所以对各元素进行赋值和访问时会稍微复杂一些,需要通过数组的下标来访问某给定数组里的各个元素。数组的下标是一组从0(注意,不是1)开始编号的整数,最大编号等于数组元素的总个数减去1。从0开始编号的数组下标往往会给初学者带来许多麻烦,所以我们想再重复一遍:数组中的第一个元素是下标是0;第二个元素的下标是1,最后一个元素的下标是x-1,其中x是数组元素的个数(也叫做数组的长度)。下面这段代码演示了如何把一个值赋值给数组中的某个元素以及如何输出它:
- myArray[0] = 42.9;
- std::cout << myArray[0];
一般来说,只对数组中的个别元素进行处理的程序并不多见。绝大多数程序会利用一些循环语句来访问数组中的每一个元素,如下所示: - for (int i = 0; i < x; ++i) {
-
- }
这个循环将遍历每一个数组元素,从0到x-1。这里唯一需要注意的是,必须提前知道这个数组里有多少个元素(即x到底是多少)。在声明一个数组以及通过循环语句访问它时,最简单的办法是用一个常量来代表这个值。
以上概念都会在接下来的示例程序里演示。它将从用户那里接受一组数值,然后依次输出它们、它们的累加和以及它们的平均值。
使用数组
1.在文本编辑器或IDE里创建一个空白的新文本文档(代码清单6-1)。
-
- #include <iostream>
代码清单6-1 numbers数组容纳10个整数,这些整数来自用户输入。我们将计算这些值的累加和、平均值并输出 - 1
- 2
- 3 #include <iostream>
- 4
- 5 int main() {
- 6
- 7
- 8
- 9 const unsigned short ITEMS = 10;
- 10
- 11
- 12 int numbers[ITEMS];
- 13
- 14 std::cout << "You will be prompted to enter " << ITEMS
<< " numbers. They can be positive or - →negative but cannot contain decimals or commas.\n\n";
- 15
- 16
- 17
- 18 for (int i = 0; i < ITEMS; ++i) {
- 19
- 20
- 21 std::cout << "Enter a number: ";
- 22
- 23
- 24 while (!(std::cin >> numbers[i])) {
- 25
- 26
- 27 std::cin.clear();
- 28 std::cin.ignore(100, '\n');
- 29 std::cout << "Please enter a valid integer: ";
- 30
- 31 }
- 32
- 33 }
- 34
- 35
- 36 std::cout << "The following numbers have been recorded:\n";
- 37
- 38
- 39 int total = 0;
- 40
- 41
- 42 for (int i = 0; i < ITEMS; ++i) {
- 43
- 44
- 45 std::cout << numbers[i] << "\n";
- 46
- 47
- 48 total += numbers[i];
- 49
- 50 }
- 51
- 52
- 53 std::cout << "The sum of the numbers is "
- 54 << total << "\nThe average of the numbers is "
- 55 << (float(total)/ITEMS) << "\n\n";
- 56
- 57 std::cin.ignore(100, '\n');
- 58 std::cout << "Press Enter or Return to continue.\n";
- 59 std::cin.get();
- 60 return 0;
- 61
- 62 }
【责任编辑:
云霞 TEL:(010)68476606】