Pointer in 2 dimensionalem Array

Schnelle objektorientierte, kompilierende Programmiersprache.
DANrulz81
Beiträge: 53
Registriert: Fr Dez 23, 2011 9:40 pm

Pointer in 2 dimensionalem Array

Beitrag von DANrulz81 » Fr Jan 06, 2012 4:40 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer in 2 dimensionalem Array

Beitrag von Xin » Fr Jan 06, 2012 4:43 pm

Code: Alles auswählen

zeiger=&brett[0][0];
printf("%i ", brett[i][j]);
Fällt Dir etwas auf? ^^


Bitte rücke in Zukunft Deine Quelltext sauber ein!
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

DANrulz81
Beiträge: 53
Registriert: Fr Dez 23, 2011 9:40 pm

Re: Pointer in 2 dimensionalem Array

Beitrag von DANrulz81 » Fr Jan 06, 2012 4:55 pm

Sorry für die schlechte Formatierung. :oops:
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.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Pointer in 2 dimensionalem Array

Beitrag von cloidnerux » Fr Jan 06, 2012 4:59 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

DANrulz81
Beiträge: 53
Registriert: Fr Dez 23, 2011 9:40 pm

Re: Pointer in 2 dimensionalem Array

Beitrag von DANrulz81 » Fr Jan 06, 2012 5:03 pm

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?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer in 2 dimensionalem Array

Beitrag von Xin » Fr Jan 06, 2012 5:12 pm

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?)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Pointer in 2 dimensionalem Array

Beitrag von cloidnerux » Fr Jan 06, 2012 5:30 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

DANrulz81
Beiträge: 53
Registriert: Fr Dez 23, 2011 9:40 pm

Re: Pointer in 2 dimensionalem Array

Beitrag von DANrulz81 » Fr Jan 06, 2012 5:32 pm

Du hast recht. Ich hab leider keine Ahnung, was mein Problem gerade war. Nach links gedacht und nach rechts gegangen :lol:

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

Code: Alles auswählen

brett[0][0]
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?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer in 2 dimensionalem Array

Beitrag von Xin » Fr Jan 06, 2012 5:36 pm

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

Code: Alles auswählen

brett[0][0]
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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

DANrulz81
Beiträge: 53
Registriert: Fr Dez 23, 2011 9:40 pm

Re: Pointer in 2 dimensionalem Array

Beitrag von DANrulz81 » Fr Jan 06, 2012 5:58 pm

Kann man for-Schleifen bei bestimmten Bedingungen abbrechen? :roll:

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;
}
Zuletzt geändert von DANrulz81 am Fr Jan 06, 2012 6:04 pm, insgesamt 2-mal geändert.

Antworten