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.
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.
Wenn "var" tatsächlich ein Array von Elementen des Typs "typ" ist, einfach so:
sizeof(var)/sizeof(typ)
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.
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;
Ok, danke!
h.d.
Kann mir jemand sagen, wie das geht, wenn ich nur einen Pointer habe?
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...Code:int *zeiger; zeiger = new int[43];
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
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.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...
Hi,
Danke für die Antwort. Den Vektor werd ich mir mal ansehen.
Gruss, Michael
Lesezeichen