Zeiger für 2D Array
-
#include <stdio.h> main() { int *zeiger; int array [16][16]; int i, j ; for (i=0; i<16; i++) { for (j=0; j<16; j++) { array[i][j] = i; } } zeiger = array + 4; printf ("%d\n", *zeiger); }
Ich will den Zeiger jedes mal 4 Byte nachschieben.
Z. b. Zuerst zeiger zeigt array[0][4] danach array[0][8] .... array[2][4] array[2][8] array[2][12] Könnt ihr den Kode da oben korrigieren?
Wie geht das? Warum ist mein Code falsch?
Es klappt wenn es nur ein dimensional array ist. Warum? Z. b. den unteren Kode.
#include <stdio.h> main() { int *zeiger; int array [16]; int i; for (i=0; i<16; i++) { array[i] = i; } zeiger = array + 4; printf ("%d\n", *zeiger); }
-
Du meinst statt "4 Byte" wohl "4 int"?
-
Wutz schrieb:
Du meinst statt "4 Byte" wohl "4 int"?
Genau.
Kannst du auch die Frage beantworten.
-
Was gibt den dein Programm aus?
Und was erwartest du, dass du behauptest es wäre falsch?
-
#include <stdio.h> int main() { int *zeiger; int array [16][16]; int i, j ; for (i=0; i<16; i++) { for (j=0; j<16; j++) { array[i][j] = i+j*16; } } zeiger = array; printf ("%d\n", *zeiger); zeiger+=4; printf ("%d\n", *zeiger); zeiger+=4; printf ("%d\n", *zeiger); ... return 0; }
-
Schade, ich dachte er würde es selber rausfinden.
Ich hätte jetzt
array[i][j] = i*100+j;
vorgeschlagen, dann sieht man den Index besser.