mikrocontroller.net

Forum: Compiler & IDEs Bitte um Hilfe beim Arrayaufbau


Autor: popi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: popi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Markus Volz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: popi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank !!!!!!!!

Genau was ich meinte.

Was bedeutet das * bei der char-Deklaration ?

Grüße

popi

Autor: Markus Volz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: popi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!!!1

Gruß

popi

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.