Warum haben 2 Elemente im Array die gleiche Speicheradresse?
-
Hi ich wollte mal fragen, warum 2 Elemente die gleiche Speicheradresse haben?
Es sind immer die Elemente [0][2] und [1][0].#define ZEILEN 2 #define SPALTEN 3 #include <stdio.h> #include <stdlib.h> typedef int MATRIX[ZEILEN][SPALTEN]; void MatrixEingabe(MATRIX*); int main() { MATRIX m; MatrixEingabe(&m); return EXIT_SUCCESS; } void MatrixEingabe(MATRIX *m) { int i,j; for (i=0; i<ZEILEN; i++) { for (j=0; j<SPALTEN; j++) { scanf("%d", &m[i][j]); printf("i: %d j: %d m: %d *m: %d \n",i,j,m[i][j],*m[i][j]); } } }
-
Weil ZEILEN == 2 ist.
Evtl. etwas hilfreicher: m zeigt auf ein Array, ist aber selbst keins.
-
OK, danke schonmal.
Stimmt wenn ich ZEILEN auf einere Zahl ändere, dann funktioniert es.
Mir leuchtet das aber noch nicht ein warum das mit der 2 nicht geht.
hmm
-
Nebenbei muss das (wenn du wirklich einen Zeiger auf die Matrix als Argument haben willst) heißen:
scanf("%d", m[i][j]); // Ohne das & printf("i: %d j: %d m: %p *m: %d \n",i,j,m[i][j],*m[i][j]); // Pointer gibt man mit %p aus
Aber wie camper schon sagte willst du wahrscheinlich sowieso ganz was anderes, nämlich:
#include <stdio.h> #include <stdlib.h> typedef int MATRIX[ZEILEN][SPALTEN]; void MatrixEingabe(MATRIX); int main() { MATRIX m; MatrixEingabe(m); return EXIT_SUCCESS; } void MatrixEingabe(MATRIX m) { int i,j; for (i=0; i<ZEILEN; i++) { for (j=0; j<SPALTEN; j++) { scanf("%d", &m[i][j]); printf("i: %d j: %d &m: %p m: %d \n",i,j,&m[i][j],m[i][j]); } } }
P.S.: Schreib doch mal ein Programm in dem du ein 1D-Array an eine Funktion übergibst, das von dieser mit Werten gefüllt wird. Dann sollte dir etwas auffallen. Falls dir nichts auffällt, dann zeig uns mal dieses Programm.
-
Ok
Danke an euch, für eure Hilfe