mikrocontroller.net

Forum: PC-Programmierung Vertehe den Code nicht


Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe den Code nicht. Wer kann mir helfen

typedef struct
{
   Uint uifile;
   Uint *puiel;
} SBlock;



Uint auiel[] =
{
   1,
   2,
   3,
   4,
   5,
   6,

};

SBlock asBlock[] =
{
   {
      iAi, auiel
   },
   {
      iProfFDi, auiel
   }
};

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das erste ist eine Typdeklaration, die eine Struktur mit dem Typ-Namen 
SBlock deklariert.

Das zweite ist ein initialisiertes Array vom Typ Uint, das Array enthält 
sechs Elemente.

Das dritte ist ein initialisiertes Array aus Strukturen vom eingangs 
deklarierten Typ-Namen SBlock, dieses Array enthält zwei Elemente.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
typedef struct { Uint uifile; Uint *puiel; } SBlock;

SBlock ist ein anderer Name (typedef) für eine Struktur mit den 
Strukturelementen uifile vom Typ Uint und puiel welches ein Zeiger (*) 
auf den Typ Uint ist.

Rechtsrum von Innen nach Aussen Spiralen

Uint auiel[]
Ein Array ([]) namens auiel mit Elementen vom Typ Uint.

=
{
   1,
   2,
   3,
   4,
   5,
   6,
};
ist die Initialisierung von sechs Elmenten dieses Arrays.

SBlock asBlock[]
Ein Array ([]) namens asBlock mit Elementen vom Typ SBlock.

= {
   {
      iAi, auiel
   },
   {
      iProfFDi, auiel
   }
};
ist die Initialisierung von zwei Elmenten dieses Arrays. Danach ist

asBlock[0].uifile == iAi
asBlock[0].puiel  == auiel
asBlock[1].uifile == iProfFDi
asBlock[1].puiel  == auiel

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber ist das nicht ein Pointer?Uint *puiel;

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schreibe ich an die Stelle asBlock[0]. puiChannel   das Array oder 
wie?

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde gerne auiel[] durchsuchen nach einen Eintrag und den Index 
dann in zurück liefern? geht das so.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sprichst in Rätseln.

> Aber ist das nicht ein Pointer?Uint *puiel;

Ja, siehe oben "puiel welches ein Zeiger (*) auf den Typ Uint ist."

> Dann schreibe ich an die Stelle asBlock[0].puiChannel das Array oder
> wie?

DAS Array gibt es nicht. Du hast zwei Arrays: asBlock und auiel.

asBlock[0].puiChannel gibt es nicht. Die Struktur mit dem 
selbstdefinierten Namen SBlock hat nur die Elemente uifile und puiel.

> Ich würde gerne auiel[] durchsuchen nach einen Eintrag und den Index
> dann in zurück liefern?

in WAS?

> geht das so.

So WIE?

An sich ist das Suchen in auiel[] Pippifax

gesuchte_zahl = 3;
maxindex_von_auiel = 5;
gefundener_index = -1; // nicht gefunden

for (index = 0; index <= maxindex_von_auiel; index++)
{
  if (gesuchte_zahl == auiel[index])
  {
    gefundener_index = index;
    break;
  }
}

In gefundener_index steht der niedrigeste Index der gesuchten Zahl im 
Array (interessant, wenn die Zahl mehrfach in auiel steht) oder eine -1, 
wenn die Zahl überhaupt nicht im Array auiel steht.

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.