Seite 1 von 3
Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 4:40 pm
von DANrulz81
Hallo zusammen,
ich experimentiere mal wieder mit Pointern, diesmal in einem 2D Array. Folgenden Code hab ich geschrieben:
Code: Alles auswählen
#include <stdio.h>
int main(void)
{
int brett[8][8] = {0};
brett[2][1] = 7;
brett[4][2] = 8;
brett[3][5] = 9;
brett[6][7] = 3;
int i, j;
int *zeiger=NULL;
zeiger=&brett[0][0];
// Schleife fuer Zeilen, Y-Achse
for(i=0; i<8; i++) {
// Schleife fuer Spalten, X-Achse
for(j=0; j<8; j++) {
printf("%i ", brett[i][j]);
}
printf("\n");
}
zeiger+=29;
printf("\n%i",*zeiger);
return 0;
}
Ich möchte mit dem Zeiger auf die "9" zeigen, was so auch funktioniert. Allerdings ist das in einem großen Feld doch sehr Fehleranfällig und umständlich. Jetzt meine Frage. Kann ich dem Zeiger auch irgendwie die Koordinaten zu weisen? Also praktisch so, dass ich dem Zeiger sage: "Fahre 6 Stellen entlang der x-Achse nach rechts und 4 Stellen entlang der y-Achse nach unten"? Bin für jeden Vorschlag dankbar.
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 4:43 pm
von Xin
Fällt Dir etwas auf? ^^
Bitte rücke in Zukunft Deine Quelltext sauber ein!
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 4:55 pm
von DANrulz81
Sorry für die schlechte Formatierung.
Ja, das fällt mir schon auf, irgendwie habe ich mich falsch ausgedrückt. Wenn ich zum Beispiel eine Eingabe machen muss, in der ich dem "Zeiger" sage, er soll erst die x- und dann die y-Achse "abfahren, dann muss ich ja die "Koordinaten" abfragen. Ich hoffe, dass das verständlicher war. Ich möchte einfach nicht rechnen müssen dazu, sondern nur die Koordinaten abfragen, bzw. übergeben.
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 4:59 pm
von cloidnerux
Ich möchte einfach nicht rechnen müssen dazu
Dann müsstest du einen Zeiger auf ein zwei Dimensionales Array anlegen.
Ansonsten hast du keine Möglichkeit, da der RAM 1 Dimensional ist und nicht 2 Dimensional.
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 5:03 pm
von DANrulz81
O.k.
Ich habe das so ähnlich gemeint, irgendwie ist es blöd zum erklären:
Code: Alles auswählen
printf("\nWo soll der Zeiger hinzeigen?");
scanf("%i %i",&x,&y);
zeiger=&brett[x-1][y-1];
printf("\n%i",*zeiger);
Dann müsstest du einen Zeiger auf ein zwei Dimensionales Array anlegen.
Und wie mach ich das?
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 5:12 pm
von Xin
DANrulz81 hat geschrieben:O.k.
Ich habe das so ähnlich gemeint, irgendwie ist es blöd zum erklären:
Code: Alles auswählen
printf("\nWo soll der Zeiger hinzeigen?");
scanf("%i %i",&x,&y);
zeiger=&brett[x-1][y-1];
printf("\n%i",*zeiger);
Was stimmt mit dem Quelltext nicht, bzw. warum nimmst Du diesen nicht?
(evtl. noch aus %i ein %d machen?)
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 5:30 pm
von cloidnerux
Und wie mach ich das?
Code: Alles auswählen
int myArray[10][10];
int (*c)[10][10];
c = &myArray;
(*c)[0][0] = 10;
Die Grenzen des Arrays sind frei gewählt und müssen den Anforderungen angepasst werden.
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 5:32 pm
von DANrulz81
Du hast recht. Ich hab leider keine Ahnung, was mein Problem gerade war. Nach links gedacht und nach rechts gegangen
Ein Frage habe ich noch. Nun möchte ich in dem Code
Code: Alles auswählen
#include <stdio.h>
int main(void)
{
int brett[24][24] = {0};
brett[2][1] = 7;
brett[4][2] = 8;
brett[3][5] = 9;
brett[12][8] = 3;
int i, j,x,y;
int *zeiger=NULL;
// Schleife fuer Zeilen, Y-Achse
for(i=0; i<24; i++) {
// Schleife fuer Spalten, X-Achse
for(j=0; j<24; j++) {
printf("%i ", brett[i][j]);
}
printf("\n");
}
//zeiger+=575;
printf("\nWo soll der Zeiger hinzeigen?");
scanf("%i %i",&x,&y);
zeiger=&brett[x-1][y-1];
printf("\n%i",*zeiger);
return 0;
}
eine Funktion einfügen, in dem ich den Pointer durch das Array scheuche, und er mir die drei "sucht". Also den Pointer bei
starten lasse, und ihn solange erhöhe, bis der Inhalt der Adresse, auf die der Pointer zeigt, 3 beinhaltet. Und dann möchte ich die "Koordinaten" am liebsten aus dem Pointer auslesen. Geht das?
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 5:36 pm
von Xin
DANrulz81 hat geschrieben:eine Funktion einfügen, in dem ich den Pointer durch das Array scheuche, und er mir die drei "sucht". Also den Pointer bei
starten lasse, und ihn solange erhöhe, bis der Inhalt der Adresse, auf die der Pointer zeigt, 3 beinhaltet. Und dann möchte ich die "Koordinaten" am liebsten aus dem Pointer auslesen. Geht das?
Du hast ja bereits eine verschachtelte Schleife, in der Du das Spielfeld ausgibst.
Schreib Sie so um, dass abbricht, wenn Du die (erste!) drei findest.
Re: Pointer in 2 dimensionalem Array
Verfasst: Fr Jan 06, 2012 5:58 pm
von DANrulz81
Kann man for-Schleifen bei bestimmten Bedingungen abbrechen?
So hab ich das jetzt, ist aber leider nicht so, wie ich das wollte:
Code: Alles auswählen
int main(void)
{
int brett[24][24] = {0};
brett[2][1] = 7;
brett[4][2] = 8;
brett[3][5] = 9;
brett[12][12] = 3;
int i, j,x,y;
int *zeiger=NULL;
zeiger=&brett[0][0];
// Schleife fuer Zeilen, Y-Achse
for(i=0; i<24; i++) {
// Schleife fuer Spalten, X-Achse
for(j=0; j<24&&*zeiger!=3; j++) {
printf("%i ", brett[i][j]);
zeiger++;
}
printf("\n");
}
zeiger=&brett[0][0];
printf("\nWo soll der Zeiger hinzeigen?");
scanf("%i %i",&x,&y);
zeiger=&brett[x-1][y-1];
printf("\n%i",*zeiger);
return 0;
}