Hallo zusammen, ich würde gerne eine Schleife erstellen, in der immer der nächte Wert eines Array steht. Hier mal in Klarcode: arrayinhalt = (10,200,50); arraystelle = 0; while(1) { for (i=0; i = [arraystelle]; i++) { ..... } arraystelle++; } Also beim ersten Durchlauf würde i bis 10 zählen (erste Stelle im Array), beim zweiten bis 200 udn beim dritten Durchlauf bis 50. Hoffe es ist verständlich und jemand kann mir da mal einen schnellen Tip geben. Danke und Grüße popi
ich bin mir nicht sicher, aber int meinarray[10] deklariert das array. aber wie belege ich es vor ? mit meinarray = (10,20,30...); gehts nicht. Und wie erstelle ich das gleiche mit Strings? Also array['string1','string2' etc...] Danke schon mal im voruas und Grüße popi
Hi popi, das geht folgendermaßen: int arrayinhalt[] = { 10, 200, 50 }; // geschweifte Klammern!! int arraystelle = 0; while ( arraystelle < 3 ) { int ende = arrayinhalt[arraystelle]; for ( i=0; i<ende; i++ ) { ..... } arraystelle++; } Ein Stringarray wird so initialisiert: char *array[] = { "str1", "str2", "str3" }; Gruß Markus
Vielen Dank !!!!!!!! Genau was ich meinte. Was bedeutet das * bei der char-Deklaration ? Grüße popi
Der * bedeutet, daß es sich bei array um eine Pointer-Variable handelt. Dabei zeigt array[0] auf "str1", array[1] auf "str2" usw. Pointer und [] (Arrays) sind in C/C++ austauschbar. Man könnte auch schreiben char array[][] = { "str1", ... }; char *array[] = { "str1", ... }; ist absolut gleichwertig. Gruß Markus
> Pointer und [] (Arrays) sind in C/C++ austauschbar. Das ist das größte Missverständniss, dass es in C überhaupt gibt. Weil das oben gesagte einfach nicht stimmt. Ein Pointer ist ein Pointer und ein Array ist ein Array. Den einzigen Zusammenhang den es gibt, ist der, dass unter bestimmten Umständen der Name eines Arrays alleine (also ohne Indizierung) als Pointer auf das 0-te Element des Arrays aufgefasst wird. Das bedeutet aber nicht, dass ein Array ein Pointer ist, oder umgekehrt. Insbesondere ist > Man könnte auch schreiben > char array[][] = { "str1", ... }; > char *array[] = { "str1", ... }; ist absolut gleichwertig. totaler Unsinn. Die beiden sind absolut nicht gleichwertig! Im ersten Fall wird ein 2-dimensionales Array angelegt (wenn es dann auch noch richtig deklariert werden würde), dass mit dem Inhalt "str1", "str2", etc. gefüllt wird. Im zweiten Fall werden die Strings "str1", "str2", etc. als String-Konstante angelegt, und das Array array enthält Zeiger auf diese String Konstanten. Im ersten Fall sind die Strings änderbar, im zweiten Fall sind sie es nicht, da String-Literale automatisch als Konstante gehandhabt werden!
Außerdem müssen bei der ersten Variante alle Strings gleich lang sein, da jedes Element eines Arrays gleich groß ist. Bei der zweiten gilt das nicht, da Zeiger auf einen bestimmten Typ immer gleich groß sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.