C++ 数组

2018-03-22 16:07 更新

学习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; 
} 
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号