Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: [C++] Arrays

  1. #1
    W32.FunLove
    Registriert seit
    11.08.2008
    Beiträge
    128

    Standard [C++] Arrays

    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

  2. #2
    NoClose Wurm
    Registriert seit
    05.03.2008
    Beiträge
    173

    Standard

    Arrays aka Felder sind sozusagen Ansammlungen von Variablen.
    zB ist
    Code:
    int Feld1[20];
    ein Array, der aus 20 Integerwerten besteht, die alle einzeln über ihren Index ( das in den [] ) angesprochen werden können.
    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
    Code:
    char Text[20];
    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.
    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
    They misunderestimated me.
    George W. Bush



  3. #3
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von RikuXan
    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.
    Das >muss< nicht sein.
    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:
    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;
    }
    Ausgabe:
    Code:
    blackberry@system:~/Desktop$ gcc a.c -o a; ./a
    Stringlänge (ANSI): 20
    Stringlänge (BLACKBERRY XD): 19
    Und so kann man dann weiter arbeiten

    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 ^.^

  4. #4
    NoClose Wurm
    Registriert seit
    05.03.2008
    Beiträge
    173

    Standard

    Dann sag ichs so:
    Wenn du gemütlich mit den Standardbibliotheksfunktionen arbeiten willst, wovon ich ausgegangen bin

    MfG RikuXan
    They misunderestimated me.
    George W. Bush



  5. #5
    Fortgeschrittener
    Registriert seit
    18.01.2008
    Beiträge
    38

    Standard

    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]

  6. #6
    W32.FunLove
    Registriert seit
    11.08.2008
    Beiträge
    128

    Standard

    Zitat Zitat von Sector
    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.
    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.

    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.

  7. #7
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von Pekel
    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.
    Gerade darum ist C++ gut und andere Sprachen (zB. VB) Müll
    - in C/C++ musst du dich wenigstens mal mit Speicher & Co. beschäftigen!


    Zitat Zitat von Pekel
    @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.
    Wenn du wegen einem Byte mehr oder weniger einen Buffer-Overflow drin hast ist das sehr wohl ein Unterschied.
    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 ^.^

  8. #8
    W32.FunLove
    Registriert seit
    11.08.2008
    Beiträge
    128

    Standard

    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

  9. #9
    CIH-Virus Avatar von krusty
    Registriert seit
    12.10.2008
    Beiträge
    445

    Standard

    ich habe eine frage, passen in ein array char blub [6]
    nicht doch genau 6 variablen?
    Code:
    blub [0] = 1;
    blub [1] = 2;
    blub [2] = 3;
    blub [3] = 4;
    blub [4] = 5;
    blub [5] = 6;
    ? oda liege ich da total falsch ?

  10. #10
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von krusty
    ich habe eine frage, passen in ein array char blub [6]
    nicht doch genau 6 variablen?
    Ja, das ist richtig.
    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 ^.^

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •