C++ 數(shù)組

2018-03-22 16:07 更新

學(xué)習(xí)C++ - C++數(shù)組

數(shù)組是一個(gè)可以容納多個(gè)值的數(shù)據(jù)表,全部是一種。

要?jiǎng)?chuàng)建數(shù)組,請(qǐng)使用聲明語句。

例如,以下聲明創(chuàng)建一個(gè)名為months的數(shù)組,它具有12個(gè)元素,每個(gè)元素可以包含一個(gè)類型short值:

short months[12];     // creates array of 12 short 

每個(gè)元素本質(zhì)上都是一個(gè)變量,您可以將其視為簡(jiǎn)單變量。

這是聲明數(shù)組的一般形式:

typeName arrayName [arraySize]; 

表達(dá)式arraySize(它是元素的數(shù)目)必須是整數(shù)常量。

例子

以下代碼演示了數(shù)組的一些屬性,包括聲明數(shù)組,為數(shù)組元素分配值和初始化數(shù)組。


#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; 
} 

上面的代碼生成以下結(jié)果。



數(shù)組的初始化規(guī)則

您只能在定義數(shù)組時(shí)使用初始化窗體。

int cards[4] = {3, 6, 8, 10};       // okay 
int hand[4];                        // okay 

初始化數(shù)組時(shí),可以提供比數(shù)組元素更少的值。

float val[5] = {5.0, 2.5};

如果部分初始化數(shù)組,編譯器會(huì)將剩余的元素設(shè)置為零。

將數(shù)組的所有元素初始化為零 - 很容易將第一個(gè)元素初始化為零:

long totals[500] = {0};

如果在初始化數(shù)組時(shí)將方括號(hào)[]留空,則C ++編譯器將為您計(jì)算元素。

假設(shè),例如,你做出這個(gè)聲明:

short things[] = {1, 5, 3, 8};

編譯器使事情成為四個(gè)元素的數(shù)組。

其次,您可以使用空括號(hào)將所有元素設(shè)置為0:

unsigned int counts[10] = {};  // all elements set to 0 
float balances[100] {};        // all elements set to 0 

示例:將數(shù)組的元素初始化為零并打印數(shù)組。


#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; 
}

上面的代碼生成以下結(jié)果。

在聲明中初始化數(shù)組


#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; 
}

上面的代碼生成以下結(jié)果。

二維數(shù)組

對(duì)于二維數(shù)組,每個(gè)元素本身就是一個(gè)數(shù)組。

因此,初始化由逗號(hào)分隔的一維初始化組成,全部包含在一組大括號(hào)中:

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] 
}; 

以下代碼顯示了如何使用嵌套循環(huán)和2-D數(shù)組。

#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; 
} 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)