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


von Richard (Gast)


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!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

1
int Feld[6][6];
2
3
int i;
4
int j;
5
6
for (i = 0; i < 6; i++)
7
{
8
  for (j = 0; j < 6; j++)
9
  {
10
    Feld[i][j] = i * j;
11
  }
12
}

von Richard (Gast)


Lesenswert?

Ja wie kann man denn auf eine ganze Zeile im ganzen zugreifen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was magst Du damit meinen?

von Richard (Gast)


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

von Benedikt K. (benedikt)


Lesenswert?

geht nicht

von arc (Gast)


Lesenswert?

Raten wir mal etwas...
1
void test(int* rowP) {
2
  for (int col = 0; col < n; col++) {
3
    rowP[col] = 12345;
4
  }
5
}
6
7
int Feld[ZEILEN][SPALTEN];
8
test(Feld[1]);
9
10
// was nicht geht ist z.B. Feld[1] = Feld[2], um eine Zeile zu kopieren
11
// dies geht entweder elementweise oder per memcpy
12
Feld[1][0] = Feld[2][0]; Feld[1][1] = Feld[2][1]; 
13
memcpy(Feld[1], Feld[2], sizeof(int) * SPALTEN);
14
15
// soll die Funktion test auf das gesamte Array zugreifen
16
// gehen folgende Varianten
17
void test2(int param[ZEILEN][SPALTEN]) {
18
}
19
20
void test3(int param[][SPALTEN]) {
21
}
22
23
void test4(int *param[SPALTEN]) {
24
}

von printf (Gast)


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>

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
Noch kein Account? Hier anmelden.