mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Felder in "C" handling


Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag!
Ich möchte mich Informieren im Bezug auf Arrays.
Und zwar möchte ich ein Feld mit zwei Dimensionen anlegen!

Und das habe ich so gemacht

Feld[6][6]

jetzt würde ich gerne wissen wie man richtig dem Feld Werte zuweisen 
kann und desweiteren möchte ich gerne wissen wie ich auf eine komplette 
Zeile mit der Variable Feld zugreifen kann?
Danke für Ihre hilfe!

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

Bewertung
0 lesenswert
nicht lesenswert
int Feld[6][6];

int i;
int j;

for (i = 0; i < 6; i++)
{
  for (j = 0; j < 6; j++)
  {
    Feld[i][j] = i * j;
  }
}

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja wie kann man denn auf eine ganze Zeile im ganzen zugreifen?

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

Bewertung
0 lesenswert
nicht lesenswert
Was magst Du damit meinen?

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte die Variable feld einer Funktion übergegen und in dieser 
Funktion auf komplette Zeilen zugreifen.

Z.B.

schreibe Zeile1 von feld
schreibe Zeile2 von Feld
...


so in etwa nach diesem Schema

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht nicht

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Raten wir mal etwas...
void test(int* rowP) {
  for (int col = 0; col < n; col++) {
    rowP[col] = 12345;
  }
}

int Feld[ZEILEN][SPALTEN];
test(Feld[1]);

// was nicht geht ist z.B. Feld[1] = Feld[2], um eine Zeile zu kopieren
// dies geht entweder elementweise oder per memcpy
Feld[1][0] = Feld[2][0]; Feld[1][1] = Feld[2][1]; 
memcpy(Feld[1], Feld[2], sizeof(int) * SPALTEN);

// soll die Funktion test auf das gesamte Array zugreifen
// gehen folgende Varianten
void test2(int param[ZEILEN][SPALTEN]) {
}

void test3(int param[][SPALTEN]) {
}

void test4(int *param[SPALTEN]) {
}


Autor: printf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel:
<c>
#include <string.h>

int main(void)
{

char Feld[6][6];


memset(Feld,0,sizeof(Feld));  //Feld mit Nullen initialisieren

int i;
int j;

for (i = 0; i < 6; i++)
{
  for (j = 0; j < 6; j++)
  {
    Feld[i][j] = i * j;
  }
}


memcpy(Feld[0],"ABCDE",5);  //kopiert ABCDE in Zeile 0

return 0;
}

</c>

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.