Array: Unterschied zwischen den Versionen
K |
K |
||
Zeile 3: | Zeile 3: | ||
Diese Konstrukte werden oft verwendet, wenn man eine fixe Anzahl von Daten eines bestimmten Objekts verarbeiten will. Durch die Verwendung von Arrays muss man nicht viele Variablen anlegen und hat so alles übersichtlicher. In den meisten Sprachen haben Arrays jedoch den Nachteil, dass sie statisch sind, d.h. man legt einmal ihre Größe fest und danach kann man diese nicht mehr ändern. Will man mehr Objekte ablegen, muss man ein neues Array anlegen. Daher haben Arrays in diesen Sprachen aber auch einen Vorteil gegenüber den dynamischen Strukturen wie Listen: Da sie eine fest definierte Größe haben kann man sie über einen Index anlegen und darauf zugreifen. Dies ist meistens eine schnellere Möglichkeit, als es bei anderen Strukturen möglich ist. | Diese Konstrukte werden oft verwendet, wenn man eine fixe Anzahl von Daten eines bestimmten Objekts verarbeiten will. Durch die Verwendung von Arrays muss man nicht viele Variablen anlegen und hat so alles übersichtlicher. In den meisten Sprachen haben Arrays jedoch den Nachteil, dass sie statisch sind, d.h. man legt einmal ihre Größe fest und danach kann man diese nicht mehr ändern. Will man mehr Objekte ablegen, muss man ein neues Array anlegen. Daher haben Arrays in diesen Sprachen aber auch einen Vorteil gegenüber den dynamischen Strukturen wie Listen: Da sie eine fest definierte Größe haben kann man sie über einen Index anlegen und darauf zugreifen. Dies ist meistens eine schnellere Möglichkeit, als es bei anderen Strukturen möglich ist. | ||
− | Für die Erzeugung von Arrays gibt es unterschiedliche Wege, jedoch haben sie meistens gemeinsam, dass eckige Klammern ('''[]''') ein Array symbolisieren. So wird in [[C]] | + | Für die Erzeugung von Arrays gibt es unterschiedliche Wege, jedoch haben sie meistens gemeinsam, dass eckige Klammern ('''[]''') ein Array symbolisieren. So wird in [[C]]/[[C++]] und Java ein Array mit |
<syntaxhighlight lang="c">typ name[];</syntaxhighlight> | <syntaxhighlight lang="c">typ name[];</syntaxhighlight> | ||
deklariert und die Initialisierung kann auf zwei unterschiedliche Wege erfolgen, | deklariert und die Initialisierung kann auf zwei unterschiedliche Wege erfolgen, | ||
Zeile 21: | Zeile 21: | ||
<syntaxhighlight lang="php">$array = array["Hallo", "Byte", "-", "Welt", "!!!"];</syntaxhighlight> | <syntaxhighlight lang="php">$array = array["Hallo", "Byte", "-", "Welt", "!!!"];</syntaxhighlight> | ||
Seit PHP 5.4 sind auch eckige Klammern erlaubt. | Seit PHP 5.4 sind auch eckige Klammern erlaubt. | ||
− | |||
Bei der Sprache [[C#]] wurde noch ein mehrdimensionaler Array-Typ eingeführt. Hier sind in jeder Zeile immer gleich viele Objekte, diese werden mit | Bei der Sprache [[C#]] wurde noch ein mehrdimensionaler Array-Typ eingeführt. Hier sind in jeder Zeile immer gleich viele Objekte, diese werden mit |
Version vom 23. Oktober 2018, 12:04 Uhr
Ein Array ist ein Konstrukt, in dem mehrere Objekte eines Datentyps hintereinander aufgereiht stehen. (Es wird hier immer von Objekten geredet, egal ob es in der Programmiersprache Objekte gibt oder nicht)
Diese Konstrukte werden oft verwendet, wenn man eine fixe Anzahl von Daten eines bestimmten Objekts verarbeiten will. Durch die Verwendung von Arrays muss man nicht viele Variablen anlegen und hat so alles übersichtlicher. In den meisten Sprachen haben Arrays jedoch den Nachteil, dass sie statisch sind, d.h. man legt einmal ihre Größe fest und danach kann man diese nicht mehr ändern. Will man mehr Objekte ablegen, muss man ein neues Array anlegen. Daher haben Arrays in diesen Sprachen aber auch einen Vorteil gegenüber den dynamischen Strukturen wie Listen: Da sie eine fest definierte Größe haben kann man sie über einen Index anlegen und darauf zugreifen. Dies ist meistens eine schnellere Möglichkeit, als es bei anderen Strukturen möglich ist.
Für die Erzeugung von Arrays gibt es unterschiedliche Wege, jedoch haben sie meistens gemeinsam, dass eckige Klammern ([]) ein Array symbolisieren. So wird in C/C++ und Java ein Array mit
typ name[];
deklariert und die Initialisierung kann auf zwei unterschiedliche Wege erfolgen,
name = typ[anzahl];
oder
name = malloc(sizeof(typ)*anzahl);
bzw.
name = new typ[anzahl];
Der Unterschied zwischen den beiden Arten ist, dass bei der ersten Möglichkeit der Speicher vom Compiler festgelegt wird und so nicht mehr freigegeben werden muss und bei der zweiten Art zur Laufzeit angelegt wird, welchen man dann auch selbst freigeben muss. Will man in C# oder Java ein Array anlegen, geschieht dies mit
typ[] name;
und die Initialisierung erfolgt über
name = new typ[anzahl]();
In PHP gibt es Arrays mit und ohne Schlüssel Ein Array mit Schlüssel (assoziatives Array) ist entfernt mit Typen von java.util.Map aus Java vergleichbar, also Schlüssel-Wert-Paaren.
$array = array[0 => "Byte", 1 => "-", 2 => "Welt", 3 => "!!!"];
Bei PHP darf der Schlüssel ein int oder ein String sein, bei Java können beliebige Objekt-Typen als Schlüssel verwendet werden.
Hier noch ein Array ohne Schlüssel in PHP:
$array = array["Hallo", "Byte", "-", "Welt", "!!!"];
Seit PHP 5.4 sind auch eckige Klammern erlaubt.
Bei der Sprache C# wurde noch ein mehrdimensionaler Array-Typ eingeführt. Hier sind in jeder Zeile immer gleich viele Objekte, diese werden mit
typ[,] name = new typ[zeilen,spalten]();
angelegt.
In allen anderen Sprachen lassen sich Arrays auch mit mehreren Dimensionen anlegen. Hierzu muss nur ein weiteres Klammerpaar hinzugefügt werden.
typ[][] name = new typ[zeilen][spalten]();
Diese neuen Arrays in dem bestehenden Array müssen auch nicht gleich initialisiert werden sondern können auch erst später angelegt werden um so besser auf die Gegebenheiten angepasst zu sein. Daher ist es möglich das eine Zeile mal 4 Objekte enthält und eine mal gar keine, dies muss dann im Programm alles gesondert behandelt werden.
Neben der Möglichkeit des Anlegens von leeren Arrays gibt es auch Möglichkeit Arrays gleich mit vorhandenen Daten anzulegen. In den meisten Sprachen ist dies einfach möglich indem man nach der normalen Syntax für die Initialisierung des Arrays gleich in geschweiften Klammern die Objekte durch Kommas getrennt einfügt, z.B. in Java:
String s = new String[]{"Hallo", "Byte", "-", "Welt", "!!!"};
In einigen Sprachen ist es auch möglich bei der Deklaration der Variablen gleich die Werte zuzuweisen ohne die übliche Initialisierungssyntax, z.B. in Java:
String[] s = {"Hallo", "Byte", "-", "Welt", "!!!"};