Array und Zeiger

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
ergjt
Beiträge: 2
Registriert: Sa Nov 24, 2018 1:59 pm

Array und Zeiger

Beitrag von ergjt » Sa Nov 24, 2018 2:22 pm

Hallo Community,

ich muss für eine Aufgabe ein 3d Array erstellen und dies über einen Zeiger mit einer for schleife füllen. Ich bin nicht wirklich gut im Programmieren und komme einfach nicht mehr weiter.
Die genaue Aufgabenstellung lautet:

Weisen Sie den Elementen des Arrays durch Zugriff über einen Zeiger in einer for-Schleife über alle Array-Elemente fortlaufende Werte zu.
Greifen Sie anschliessend in drei geschachtelten for-Schleifen in Array-Schreibweise auf das Array zu und geben Sie die Arrayelemente aus.
Geben Sie den Inhalt der Arrayelemente [0][0][5] und [3][3][10] aus.
Ändern sie die äußere for-Schleife auf 4 Schleifendurchläufe ab.

Mein Momentaner Stand sieht wie folgt aus:

Code: Alles auswählen

int a[3][3][3];
for(int i=0; i<3;i++){
	for(int j=0; j<3;j++){
		for(int k=0; k<3;k++){
		int* zeiger=&a[i][j][k];
		printf("%d\n".(*zeiger+i+j+k));
		}
		}
		}
Die Ausgabe erfolgt auch, aber da kommen ganz komische Zahlen raus wie:
0
1
2
1
2-16777213
2
3
4
1
2
3
1835627638
...

Ich hab im Moment keine Ahnung mehr was ich ändern muss. Hoffe jemand kann mir hier helfen.

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

Re: Array und Zeiger

Beitrag von Xin » Sa Nov 24, 2018 4:53 pm

i+j+k bedeutet, dass wenn i = 3 ist und j und k 0, dann ist die Summe 3. Das gilt aber auch für i=1, j=1 und k=1...
Ich vermute, das war nicht, was Du ausdrücken wolltest, oder?
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.

ergjt
Beiträge: 2
Registriert: Sa Nov 24, 2018 1:59 pm

Re: Array und Zeiger

Beitrag von ergjt » Sa Nov 24, 2018 5:17 pm

Hi,

also was ich nicht hinbekomme ist halt das zuweisen per Zeiger in der for schleife.
Die ganz normale Befüllung hab ich so hinbekommen:

Code: Alles auswählen

int a[3][3][3];
int x=1;
int*zeiger;

for(int i=0; i<3;i++){
for(int j=0; j<3;j++){
for(int k=0; k<3;k++){
a[i][j][k]=x;
printf("%d\n",a[i][j][k]);
x++;
}
}
}
return 0;
Mein Problem ist genau der Punkt in der Aufgabenstellung :
Weisen Sie den Elementen des Arrays durch Zugriff über einen Zeiger in einer for-Schleife über alle Array-Elemente fortlaufende Werte zu.
Greifen Sie anschliessend in drei geschachtelten for-Schleifen in Array-Schreibweise auf das Array zu und geben Sie die Arrayelemente aus.

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

Re: Array und Zeiger

Beitrag von Xin » Sa Nov 24, 2018 6:17 pm

Ich gebe Dir mal einen anderen Tipp... Überleg Dir, wie das im Speicher aussieht. Ein int ist immer vier Byte groß.
Ändere mal die printf Zeile wie folgt:

Code: Alles auswählen

int* zeiger=&a[i][j][k];
printf("Arrayposition: %p: %d ->Zeiger zeigt auf %p\n", &a[i][j][k], a[i][j][k], zeiger+i+j+k );
Und jetzt probierst Du ein wenig aus.
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.

Antworten