Hallo,
ich habe hier eine (wahrscheinlich) lächerliche Frage:
Was sind Arrays und wofür benutzt man sie?
Was ich bissher weiß ist, dass sie "Felder" sind:
int Feld [19]
Datentyp Name [Größe?]
Ich bedanke mich jetzt schonmal für alle antworten
Hallo,
ich habe hier eine (wahrscheinlich) lächerliche Frage:
Was sind Arrays und wofür benutzt man sie?
Was ich bissher weiß ist, dass sie "Felder" sind:
int Feld [19]
Datentyp Name [Größe?]
Ich bedanke mich jetzt schonmal für alle antworten
Arrays aka Felder sind sozusagen Ansammlungen von Variablen.
zB ist
ein Array, der aus 20 Integerwerten besteht, die alle einzeln über ihren Index ( das in den [] ) angesprochen werden können.Code:int Feld1[20];
Wie Arrays, denke ich am meisten benutzt werden, sind Arrays of char.
Ein Array of char ist, wie der Name schon sagt eine Ansammlung von einzelnen Charvariablen. Das ist sehr praktisch, da man so ganze Sätze, Wörter und Ähnliches ausgeben kann.
Allerdings muss man beachten, dass in einen Array of char immer ein Zeichen weniger reinpasst, als im Index der Deklaration steht. So passen zB in
nur 19 Zeichen, obwohl der Array 20 Variablen groß ist. Das liegt daran, dass der letzte Platz, für den "Null-Terminator" benutzt wird ( wenn der String 19 Zeichen lang ist, ansonsten ist er halt das Zeichen nach dem letzten normalen Zeichen ), der dem PC sagt wann der String abgeschlossen ist. Das >Muss< immer bedacht werden, da sonst ernsthafte Programmabstürze und Exploits hervorgerufen werden können.Code:char Text[20];
Sonstiges:
Initialisierung von Arrays: int Feld1[5] = { 12 , 23 , 43 , 1 , 2 };
MfG RikuXan
Falls mir noch was einfällt trag ichs nach, wollte nich so viel schreiben
Das >muss< nicht sein.Zitat von RikuXan
Zeichenketten, die in Anführungszeichen stehen wird zwar immer ein NULLbyte angehängt wodurch eine Zuweisung eines 20 Zeichenstring auf einen char-Array nicht (direkt) möglich ist (-> Fehlermeldung vom Compiler).
Trotzdem ist diese NULLterminierung keines wegs ein muss und wurde lediglich in der Standartbibliothek so eingeführt - eine Zeichenketten-terminierung kann durch JEDES beliebige Zeichen erfolgen, solange man es in seinen Funktionen als ein solches erkennt.
Sagen wir mal ich möchte meine char-Arrays mit dem ASCII-Zeichen 1 terminieren...
Quelltext:
Ausgabe:Code:#include <stdio.h> #include <stdlib.h> #include <string.h> int strlen2(char *array) { int x; for(x = 0; array[x] != 1; x++); return x; } int main(void) { char array[20]; memcpy(array, "1234567890123456789\1", 20); printf("Stringlänge (ANSI): %d\n", strlen(array)); printf("Stringlänge (BLACKBERRY XD): %d\n", strlen2(array)); return 0; }
Und so kann man dann weiter arbeitenCode:blackberry@system:~/Desktop$ gcc a.c -o a; ./a Stringlänge (ANSI): 20 Stringlänge (BLACKBERRY XD): 19
PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
please do feed the trolls crew and elk
Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
"Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^
Ich will ja nichts sagen, aber ich würde dir empfehlen, ein C bzw Cpp Buch zu kaufen, glaube mir, dass bringt dir ne Menge
Weil in sagen wir mal 95% aller Bücher für Einsteiger steht drin, was ein Array ist, und wie man sie benutzt etc.
[center:3294379cfc]Proud Member of SCF
~Special Cat Force~[/center:3294379cfc]
Ich habe auch eins (Das C/C++ Kompendium von Dirk Louis), allerdings konnte ich in dem Kapitel von den Arrays nicht das wichtigste "Rausfiltern", weil dort steht auch ziemlich viel an "Hintergrundwisse" etc. drinne. Fand die erklärung von RikuXan für mich etwas leichter zu verstehen.Zitat von Sector
Dennoch halte ich es für ein Top-Buch, auch wenn ich noch nicht außergewöhnlich weit vorrangekommen bin..
btw:
Denke ich habe durch die Erklärung von RikuXan (erst einmal) alles
wichtige über Arrays gelernt.
@BlackBerry: Ist es denn ein so großer Unterschied, wenn ich das Feld nun um eine Stelle kleiner lasse? Glaube es wird keinen stören, wenn ich standartmäßig immer das Feld um 1 größer habe, als ich Variablen habe.
Gerade darum ist C++ gut und andere Sprachen (zB. VB) MüllZitat von Pekel
- in C/C++ musst du dich wenigstens mal mit Speicher & Co. beschäftigen!
Wenn du wegen einem Byte mehr oder weniger einen Buffer-Overflow drin hast ist das sehr wohl ein Unterschied.Zitat von Pekel
Mal ganz davon abgesehen hat RikuXan eigentlich vollkommen recht mit der NULL-terminierung - ich wollte nur nochmal zeigen, dass es (zumindest theoretisch) auch anders geht.
Also lies dir das Kapitel am besten nochmal durch (ich habs auch mehr als einmal gelesen ^^) und versuch dich dann vielleicht mal daran ein paar Methoden der "string"-Klasse (#include <string>) als Funktionen zu implementieren - ist eine sehr schöne Übung und wenn du C-kompatibel programmieren willst sicher auch sehr hilfreich, weil die string-Klasse in C nicht existiert...
mfG. BlackBerry
PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
please do feed the trolls crew and elk
Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
"Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^
Wenn ich mir deinen Text noch einmal durchlese, denke ich auch, dass ich noch einmal einige Kaptiel lesen sollte...
String? In vb waren das wörter
ich habe eine frage, passen in ein array char blub [6]
nicht doch genau 6 variablen?
? oda liege ich da total falsch ?Code:blub [0] = 1; blub [1] = 2; blub [2] = 3; blub [3] = 4; blub [4] = 5; blub [5] = 6;
Ja, das ist richtig.Zitat von krusty
Nur wie RikuXan schon erwähnt hat kann es sein, dass Funktionen wie strlen aus der Standartbibliothek dann keine Korrekten Ergebnisse mehr zurückgeben.
Also sofern du diese Funktionen benutzen willst reserviere immer ein Zeichen mehr als du tatsächlich brauchst.
PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
please do feed the trolls crew and elk
Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
"Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^