6.1 数组(3)
10.完成main()函数。
- std::cin.ignore(100, '\n');
- std::cout << "Press Enter or Return to continue.\n";
- std::cin.get();
- return 0;
- }
11.把这个文件保存为arrays1.cpp,然后编译并运行这个程序(如图6-3所示)。
12.如果你愿意,还可以改变ITEMS常量的值,然后再次保存、编译和运行这个程序(如图6-4所示)。
|
图6-3 这个程序将读入10个整数, 求出它们的总和与平均值,然后输出 |
|
图6-4 ITEMS常量决定数组元素的个数 (代码清单6-1),改变这个值将改变数组的大小, 进而影响到这个程序里的两个循环语句 和最终的计算结果 |
高级数组概念
本书没有过多讨论数组,因为C++(www.cppentry.com)中的向量类型(vector,将在第13章里讨论)往往能提供一个更好的解决方案。像这个示例程序里使用的数组有这样一个不足:它们会在程序被编译时限制为一个固定的长度--numbers[]数组只能保存ITEMS个整数。要想在程序运行时动态地加大一个数组的长度,需要使用指针和内存管理。因为C++(www.cppentry.com)中的向量类型已经解决了这些问题,所以我们没有在本书里为大家准备这样的一个数组解决方案,但Larry Ullman和Marc Liyanage合著的C Programming:Visual QuickStart Guide(Peachpit Press出版公司)对这个问题有专门的讨论。
另一个更为高级的概念是多维数组。这类数组的元素还是数组。下面这条语句声明了一个包含5个元素的数组,它的每个元素都包含10个整数:
- int myArray[5][10];
第一个方括号里的数字设定了主数组的元素个数,第二个方括号里的数字设定了每个子数组的元素个数。如果要指定某个特定的元素,比如第1个子数组里的第3个元素,需要使用如下所示的语法:
- myArray[0][2] = 8;
要想遍历这样一个数组的所有元素,需要使用两个循环,其中一个嵌套在另一个的内部。外层的循环用来访问每一个子数组(比如从myArray[0]到myArray[4]);内层的循环用来访问子数组里的每一个元素(比如从myArray[x][0]到myArray[x][9])。
根据具体的编程(www.cppentry.com)需要,多维数组的维数可以无限扩大,但保存在多维数组里的每一个值必须是同样的类型(字符、整数、浮点数,等等)。
"提示
可以用如下所示的语法在创建数组时对它的元素进行赋值:- int numbers[3] = {345, 56, 89};
这只能在声明变量时进行,不能用这个办法来填充一个已经存在的数组。还可以这样做:
- int numbers[] = {345, 56, 89};
对于这种情况,编译器将根据花括号里的值的个数自动地创建出一个长度与之相匹配的数组。
在C语言里,字符串被实际存储为一个字符数组。你在C++(www.cppentry.com)里也可以使用这样的数组,但因为C++(www.cppentry.com)提供了更好的std::string类型,所以已经不必再使用那些老式的C方法了。
可以每次只输出一个数组元素的值。但下面这种做法不行(有输出,但不是你想要的效果):
- int numbers[] = {345, 56, 89};
- std::cout << numbers;
数组下标从0开始,忘记这一点就会犯所谓的"差一个"错误,最严重的后果是使用的数组下标并不存在。请看下面这段代码:
- const int I = 100;
- float nums[I];
- nums[I] = 2340.534;
【责任编辑:
云霞 TEL:(010)68476606】