Bedeutung von [ ]



  • Hallo!

    Sieht man ja öfters und da ich nicht genau weiss was das heisst frag ich mal:
    Was bedeuten die beiden Klammer ohne eine Zahl dazwischen? Also:

    char Buffer[] = "";
    

    Ist das so eine verkürzte Schreibweise von MAX_PATH oder sowas?
    Wenn ja, nimmt das dann nicht zuviel Speicherplatz weg?!

    Mfg.



  • Dann hat das Array genau soviele Elemente, wie du ihm in der Initialisierung gibst.
    In deinem Beispiel wäre das dann 1 und ziemlich unsinnig.



  • Es gibt 2 Stellen, wo dir das begegnen kann:

    a) In Deklarationen von Arrays mit Initialisierung:

    char string[] = "Hallo";
    int array[] = { 1, 2, 42 };
    

    In dem Fall wird das Array so dimensioniert, dass es den Initialisierer gerade aufnehmen kann. Dh string hat eine Größe von 6, array von 3. Dein buffer hätte eine Größe von 1 und würde daher als Buffer nicht gerade viel taugen. Das funktioniert übrigens nur mit der innersten Dimension:

    char two_d_array[][20] = { "abcdefghijklmnopqrs", /* ... */ };
    

    [][] wär nicht erlaubt.

    b) In Funktionsparametern:

    Arrays werden grundsätzlich als Pointer übergeben, so dass die folgenden drei Deklarationen identisch sind:

    int foo(char array[10]) { ... }
    int foo(char array[]) { ... }
    int foo(char *array) { ... }
    


  • brauchst du außerdem, wenn du einer funktion einen string in form einer char-zeichenkette übergeben willst, aber nicht die pointer-version benutzt:

    void my_func (char a_string[]) {
      strcpy (a_string, "hallo");
    }
    

    wobei in diesem beispiel natürlich erstma geprüft werden müsste, ob der string so lang ist wie der, der reinkopiert werden soll
    wenn man mehrdim. arrays hat, ist das auch oft praktik. dann hängt die größe von der anzahl der elemente in der initialisierungsliste ab.

    cu todo



  • da war ich wohl etwas langsam... 😃 aber du hast genau das gesagt, was ich gesagt hab bzw. sagen wollte...

    cu todo



  • Es gibt 2 Stellen, wo dir das begegnen kann:

    Unter welchen der beiden Punkte fällt die dritte Stelle?

    [ Dieser Beitrag wurde am 02.07.2003 um 15:50 Uhr von HumeSikkins editiert. ]



  • Es gibt 2 Stellen, wo dir das begegnen kann:

    Unter welchen der beiden Punkte fällt die dritte Stelle?

    Was meinst du? Ich versteh nicht, worauf sich das bezieht. Meinst du sowas wie 'operator[]'?



  • Was meinst du?

    Ich dachte an sowas wie: delete [] fred;



  • extern int array[];
    

    ist auch noch da.



  • Herzliches Danke an alle 🙂 ihr habt mir sehr geholfen!!


Anmelden zum Antworten