Freigeben über


Arrays (C++)

Ein Array ist eine Auflistung von gleiche Objekten.Der einfachste Fall eines Arrays ist ein Vektor, der möglicherweise durch die folgende Sequenz deklarierten:

decl-specifier identifier [ constant-expression ]
decl-specifier identifier []
decl-specifier identifer [][ constant-expression] . . .
decl-specifier identifier [ constant-expression ]
[ constant-expression ] . . .

1.Der Parameterbezeichner Deklarationen:

  • Ein optionaler Speicherklassen Parameterbezeichner.

  • Optionales const und/oder volatile Bezeichner.

  • Der Typname der Elemente des Arrays.

2.Der Deklarator:

  • Der Bezeichner.

  • Ein konstanter Ausdruck des ganzzahligen Typs eingeschlossen in Klammern []. Wenn mehrere Dimensionen mit zusätzlichen Klammern deklariert sind, wird der konstante Ausdruck auf den ersten Satz von Klammern weggelassen werden.

  • Optionale zusätzliche Klammern, die konstante Ausdrücke enthalten.

3.Ein optionaler Initialisierung.Weitere Informationen finden Sie unter Initialisierung.

Die Anzahl der Elemente im Array wird durch die konstanten Ausdruck angegeben.Das erste Element des Arrays ist das 0. - Element und das letzte Element ist das Element (n-1), wobei n die Anzahl der Elemente ist das Array enthalten kann.Der konstante Ausdruck muss ein ganzzahliger Typ sein und muss größer als 0 sein.Ein Array der Größe 0 (null) ist nur gültig, wenn das Array das letzte Feld in struct oder Union ist und die Verwendung der Microsoft-Erweiterungen (/Ze) aktiviert sind.

Im folgenden Beispiel wird gezeigt, wie ein Array an die Laufzeit definiert:

// arrays.cpp
// compile with: /EHsc
#include <iostream>

int main() {
   using namespace std;
   int size = 3, i = 0;

   int* myarr = new int[size];

   for (i = 0 ; i < size ; i++)
      myarr[i] = 10;

   for (i = 0 ; i < size ; i++)
      printf_s("myarr[%d] = %d\n", i, myarr[i]);

   delete [] myarr;
}

Arrays sind abgeleitete Typen und können von einem anderen abgeleiteten Typ oder die grundlegenden Funktionen, außer voidVerweise und daher erstellt werden.

Die Arrays, die von anderen Arrays erstellt werden, mehrdimensionale Arrays sind.In mehrdimensionalen Felder werden angegeben, indem Sie nacheinander mehrere konstante Ausdrücke in Klammern gesetzt werden.Betrachten Sie z. B. diese Deklaration:

int i2[5][7];

Sie gibt ein Array vom Typ int, konzeptionell in einer zweidimensionalen Matrix Anordnung von fünf Zeilen und sieben Spalten, wie in der folgenden Abbildung dargestellt:

Konzeptionelles Lay-out eines mehrdimensionalen Arrays

Konzeptionelles Layout eines mehrdimensionalen Arrays

In den Deklarationen von multidimensioned Arrays, die eine Initialisiererliste haben (z. B. in Initialisierungbeschrieben), kann der konstante Ausdruck, der angibt, die Begrenzungen für die erste Dimension nicht angegeben werden.Beispiele:

// arrays2.cpp
// compile with: /c
const int cMarkets = 4;
// Declare a float that represents the transportation costs.
double TransportCosts[][cMarkets] = { 
   { 32.19, 47.29, 31.99, 19.11 },
   { 11.29, 22.49, 33.47, 17.29 },
   { 41.97, 22.09,  9.76, 22.55 }
};

Die vorangehende Deklaration definiert ein Array mit drei Zeilen durch vier Spalten aufweist.Die Zeilen stellen Factory dar und Spalten stellen Märkte dar, zu denen das Fang- und Verarbeitungsschiff.Die Werte stellen die Übertragung beeinträchtigt von Factorys auf Märkten.Die erste Dimension des Arrays wird belassen, aber der Compiler füllt ihn aus, indem er den Initialisierer überprüft.

Themen in diesem Abschnitt:

Beispiel

Die Möglichkeit des Weglassens Begrenzungen der Spezifikation für die erste Dimension eines mehrdimensionalen Arrays kann in Funktionsdeklarationen auch dazu verwendet werden, wie nachfolgend veranschaulicht:

// multidimensional_arrays.cpp
// compile with: /EHsc
// arguments: 3
#include <limits>   // Includes DBL_MAX
#include <iostream>

const int cMkts = 4, cFacts = 2;

// Declare a float that represents the transportation costs
double TransportCosts[][cMkts] = { 
   { 32.19, 47.29, 31.99, 19.11 },
   { 11.29, 22.49, 33.47, 17.29 },
   { 41.97, 22.09,  9.76, 22.55 }  
};

// Calculate size of unspecified dimension
const int cFactories = sizeof TransportCosts /
                  sizeof( double[cMkts] );

double FindMinToMkt( int Mkt, double myTransportCosts[][cMkts], int mycFacts);

using namespace std;

int main( int argc, char *argv[] ) {
   double MinCost;

   if (argv[1] == 0) {
      cout << "You must specify the number of markets." << endl;
      exit(0);
   }
   MinCost = FindMinToMkt( *argv[1] - '0', TransportCosts, cFacts);
   cout << "The minimum cost to Market " << argv[1] << " is: "
       << MinCost << "\n";
}

double FindMinToMkt(int Mkt, double myTransportCosts[][cMkts], int mycFacts) {
   double MinCost = DBL_MAX;

   for( int i = 0; i < cFacts; ++i )
      MinCost = (MinCost < TransportCosts[i][Mkt]) ?
         MinCost : TransportCosts[i][Mkt];

   return MinCost;
}
  

Kommentare

Die Funktion FindMinToMkt wird so, dass beim Hinzufügen von neuen Factory keine Änderungen erforderlich sind, lediglich eine Neukompilierung geschrieben.

Siehe auch

Referenz

C++-abstrakte Deklaratoren