Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

9.4.1 Statische mehrdimensionale Arrays

9.4.1 Statische mehrdimensionale Arrays

Wie bereits erwähnt, wird bei statischen Arrays die Größe zur Entwicklungszeit, durch den Programmierer, fest vorgegeben und kannen somit zur Laufzeit nicht mehr verändert werden. Nun kann man eine Matrix bauen, welche die Werte direkt enthält und eine, die nur Zeiger auf Werte enthält.

Variante 1 Variante 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
					
int  iZeilen							= 2;
int  iSpalten							= 3;
int  iCounter							= 0;

int  aStaticIntArray[2][3];		// Variante 1
int* aStaticPointerArray[2][3];		// Variante 2

// Erzeugen

// Durchlaufe die Zeilen
for (int iRowCount=0; iRowCount<iZeilen; iRowCount++) {
	// Erzeugen der Spalteninhalte
	for (int iColCount=0; iColCount<iSpalten; iColCount++) {
		aStaticPointerArray[iRowCount][iColCount]	= new int;
	} // end of for
} // end of for

// Befüllen

// Durchlaufen der Zeilen
for (int iRowCount=0; iRowCount<iZeilen; iRowCount++) {
	// Befüllen der Spalten
	for (int iColCount=0; iColCount<iSpalten; iColCount++) {
		aStaticIntArray[iRowCount][iColCount]		= iCounter;
		*aStaticPointerArray[iRowCount][iColCount]	= iCounter;

		iCounter++;
	} // end of for
} // end of for

// Ausgeben

// Durchlaufen der Zeilen
for (int iRowCount=0; iRowCount<iZeilen; iRowCount++) {
	// Ausgeben der Spalten
	for (int iColCount=0; iColCount<iSpalten; iColCount++) {
		printf("%i ", aStaticIntArray[iRowCount][iColCount]);
		printf("%i \t\t", *aStaticPointerArray[iRowCount][iColCount]);
	} // end of for

	printf("\n");
} // end of for

// Freigeben

// Durchlaufen der Zeilen
for (int iRowCount=0; iRowCount<iZeilen; iRowCount++) {
	// Löschen der Spalteninhalte
	for (int iColCount=0; iColCount<iSpalten; iColCount++) {
		delete aStaticPointerArray[iRowCount][iColCount];
	} // end of for
} // end of for
					

Ausgabe:

0 0        1 1        2 2
3 3        4 4        5 5
		

Die Variante 1 benötigt keinerlei Speicherverwaltung. Variante 2 benötigt für den Aufbau des Arrays ebenso keine Speicherverwaltung, jedoch für die Werte, auf welche die Pointer zeigen und genau diese müssen abschließend auch wieder freigegeben werden.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012