学习C++ – C++数组
数组是一个可以容纳多个值的数据表,全部是一种。
要创建数组,请使用声明语句。
例如,以下声明创建一个名为months的数组,它具有12个元素,每个元素可以包含一个类型short值:
short months[12]; // creates array of 12 short
每个元素本质上都是一个变量,您可以将其视为简单变量。
这是声明数组的一般形式:
typeName arrayName [arraySize];
表达式arraySize(它是元素的数目)必须是整数常量。
例子
以下代码演示了数组的一些属性,包括声明数组,为数组元素分配值和初始化数组。
#include <iostream>
using namespace std;
int main()
{
int my_array[3]; // creates array with three elements
my_array[0] = 7; // assign value to first element
my_array[1] = 8;
my_array[2] = 6;
int my_value[3] = {20, 30, 5}; // create, initialize array
cout << my_array[0] + my_array[1] + my_array[2] << endl;
cout << my_array[1] << " my_array costs ";
cout << my_value[1] << ".\n";
int total = my_array[0] * my_value[0] + my_array[1] * my_value[1];
total = total + my_array[2] * my_value[2];
cout << total << " cents.\n";
cout << "\nSize of my_array array = " << sizeof my_array;
cout << " bytes.\n";
cout << "Size of one element = " << sizeof my_array[0];
cout << " bytes.\n";
return 0;
}
上面的代码生成以下结果。
数组的初始化规则
您只能在定义数组时使用初始化窗体。
int cards[4] = {3, 6, 8, 10}; // okay int hand[4]; // okay
初始化数组时,可以提供比数组元素更少的值。
float val[5] = {5.0, 2.5};
如果部分初始化数组,编译器会将剩余的元素设置为零。
将数组的所有元素初始化为零 – 很容易将第一个元素初始化为零:
long totals[500] = {0};
如果在初始化数组时将方括号[]留空,则C ++编译器将为您计算元素。
假设,例如,你做出这个声明:
short things[] = {1, 5, 3, 8};
编译器使事情成为四个元素的数组。
其次,您可以使用空括号将所有元素设置为0:
unsigned int counts[10] = {}; // all elements set to 0 float balances[100] {}; // all elements set to 0
示例:将数组的元素初始化为零并打印数组。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n[ 10 ]; // n is an array of 10 integers
// initialize elements of array n to 0
for ( int i = 0; i < 10; ++i )
n[ i ] = 0; // set element at location i to 0
cout << "Element" << setw( 13 ) << "Value" << endl;
// output each array element"s value
for ( int j = 0; j < 10; ++j )
cout << setw( 7 ) << j << setw( 13 ) << n[ j ] << endl;
}
上面的代码生成以下结果。
在声明中初始化数组
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
// use initializer list to initialize array n
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
cout << "Element" << setw( 13 ) << "Value" << endl;
// output each array element"s value
for ( int i = 0; i < 10; ++i )
cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << endl;
}
上面的代码生成以下结果。
二维数组
对于二维数组,每个元素本身就是一个数组。
因此,初始化由逗号分隔的一维初始化组成,全部包含在一组大括号中:
int maxtemps[4][5] = // 2-D array { {96, 100, 87, 101, 105}, // values for maxtemps[0] {96, 98, 91, 107, 104}, // values for maxtemps[1] {97, 101, 93, 108, 107}, // values for maxtemps[2] {98, 103, 95, 109, 108} // values for maxtemps[3] };
以下代码显示了如何使用嵌套循环和2-D数组。
#include <iostream> const int Cities = 5; const int Years = 4; int main() { using namespace std; const char * cities[Cities] = // array of pointers { // to 5 strings "A", "AA", "AAA", "AAAA", "AAAAA" }; int maxtemps[Years][Cities] = // 2-D array { {96, 100, 87, 101, 105}, // values for maxtemps[0] {96, 98, 91, 107, 104}, // values for maxtemps[1] {97, 101, 93, 108, 107}, // values for maxtemps[2] {98, 103, 95, 109, 108} // values for maxtemps[3] }; cout << "Maximum temperatures for 2008 - 2011\n\n"; for (int city = 0; city < Cities; ++city) { cout << cities[city] << ":\t"; for (int year = 0; year < Years; ++year) cout << maxtemps[year][city] << "\t"; cout << endl; } return 0; }