Arrays in C++  Grundlagen

Ein Array kann mehrere Variablen ein und desselben Typs aufnehmen.

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
	float carray[10];
	
	char array[] = {'x','y','z','u','p'};
	
	int iarray[] = { 1,2,3,4,5,6 };
	
	cout << "Groesse des Arrays: " << sizeof( carray ) << endl;
	cout << "Element-Groesse: " << sizeof( carray[0] ) << endl;
	cout << "Anzahl der Elemente: " << ( sizeof( carray ) / sizeof( carray[0])) << endl;
	
	int anzahl = ( sizeof( array ) / sizeof( array[0] ) );
	
	for (int i=0; i < anzahl; i++)
	{
		cout << "Wert: " << array[i] << endl;
	}
	
	system("PAUSE");
	return EXIT_SUCCESS;
}

 

Durch den Befehl char array[] teilen wir mit, das wir mit Buchstaben arbeiten.

In den eckigen Klammern steht der Array-Zugriffsoperator. In unserem Fall ist dieser 10. Dieser steht für die Speicherplätze.

Wichtig: Sie haben 10 Plätze reserviert. Intern jedoch wird immer bei 0 begonnen. Das heißt am Ende würde in unserem Fall die 9 stehen, nicht die 10.

Um den Compiler selbst herausfinden zu lassen, wie viel Werte sich in einem Array befinden, lassen Sie den Zugriffsoperator (also den Wert in der eckigen Klammer) einfach leer.

 

Ein Beispiel hierzu wäre:

int iarray[] (wobei int wieder für eine Ganzzahl steht)

 

Der Befehl float reserviert 4 Byte.

Durch die folgenden Befehlszeilen rechnen wir die Anzahl der Elemente des Arrays aus. Weiters lesen wir aus, wie groß das gesamte Array, und wie groß ein einziges Element ist.

	cout << "Groesse des Arrays: " << sizeof( carray ) << endl;
	cout << "Element-Groesse: " << sizeof( carray[0] ) << endl;
	cout << "Anzahl der Elemente: " << ( sizeof( carray ) / sizeof( carray[0])) << endl;

 

Diese Befehle können Sie durch einfaches Umbenennen des Arrays (in unserem Fall carray) allgemein verwenden.

Um alle Werte in unserem Array auszulesen verwenden wir eine for-Schleife.

 

Diese sieht in unserem Fall dann also so aus:

 

	for (int i=0; i < anzahl; i++)
	{
		cout << "Wert: " << array[i] << endl;
	}