Anzeige:
Ergebnis 1 bis 8 von 8

Thema: [C] Anzahl d. Elemente in 2 dymn. Array ermitteln ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.05.2001
    Beiträge
    63

    [C] Anzahl d. Elemente in 2 dymn. Array ermitteln ?

    Hallo,

    kleine Frage, ihr könnt mir bestimmt helfen.

    Ich habe folgendes Gerüst:
    char *buffer[3] = {"eins", "zwei", "drei" };

    Wie kann ich ermitteln, dass sich drei Elemente im Array befinden ?

    Danke im Voraus,
    h.d.

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Wenn "var" tatsächlich ein Array von Elementen des Typs "typ" ist, einfach so:
    sizeof(var)/sizeof(typ)

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.05.2001
    Beiträge
    63
    du meinst:

    char *buffer[3] = {"eins", "zwei", "drei" };
    printf("groesse: %i\n", sizeof(buffer)/sizeof(char)); ?

    Nein, damit bekomme ich nicht gesagt, dass ich drei elemente (eins, zwei, drei) im Array habe.

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    typ ist in deinem Fall nicht char, sondern char*, weil du ein Array von char* hast.
    Einfach
    Code:
    size_t len = sizeof buffer / sizeof *buffer;

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.05.2001
    Beiträge
    63
    Ok, danke!

    h.d.

  6. #6
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Kann mir jemand sagen, wie das geht, wenn ich nur einen Pointer habe?
    Code:
    int *zeiger;
    zeiger = new int[43];
    sizeof zeiger / sizeof *zeiger ergibt natürlich nur 'ne 1. Der Pointer selber ist 4 Byte groß und das Int im ersten Element, wo *zeiger ja erstmal hinzeigt, ist auch 4 Byte...

    PS: Die Anzahl aus dem new int[43] steht mir eigentlich nicht mehr zur Verfügung...Bis jetzt speichere ich die Größe immer seperat in einem weiteren Member ab. Find ich aber unschön...

    Danke schonmal, Michael

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Die Anzahl aus dem new int[43] steht mir eigentlich nicht mehr zur Verfügung...Bis jetzt speichere ich die Größe immer seperat in einem weiteren Member ab. Find ich aber unschön...
    Ist vielleicht unschön, aber die einzige Möglichkeit. Du musst die Größe selber speichern. Tipp: Häufig ist ein std::vector eine bessere Alternative zu einem dynamisch alloziertem Array.

  8. #8
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Hi,

    Danke für die Antwort. Den Vektor werd ich mir mal ansehen.

    Gruss, Michael

Lesezeichen

Berechtigungen

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