Seite 1 von 1

Array und Zeiger

Verfasst: Sa Nov 24, 2018 2:22 pm
von ergjt
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.

Re: Array und Zeiger

Verfasst: Sa Nov 24, 2018 4:53 pm
von Xin
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?

Re: Array und Zeiger

Verfasst: Sa Nov 24, 2018 5:17 pm
von ergjt
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.

Re: Array und Zeiger

Verfasst: Sa Nov 24, 2018 6:17 pm
von Xin
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.