Mehrdimensionales Array mit Pointer ausgeben
-
Hallo.
Ich versuche gerade ein mehrdimensionales Array mittels Pointer ausgeben zu lassen://irgendein Array int bla[3][2] = {{10, 12}, {1, 20}, {34, 32}};Nur weiß ich jetzt nicht, wie man dieses mittels Pointerarithmetik ausgeben kann...
Gruß Speedy_92
-
int* p = &bla[0][0]; std::cout << *p << std::endl;?

-
Ich habe mich undeutlich ausgedrückt. Entschuldige.
Ich meine, wie man alle Elemente ausgeben kann... eines ist ja nicht das Problem.
-
Achja... hier ist mein erster Gehversuch:
int bla[3][2] = {{10, 12}, {1, 20}, {34, 32}}; int (*p_bla)[2] = &bla[0]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { std::cout<<*(p_bla + i)[j]<<std::endl; } }
-
Ich habe es hinbekommen...
Es muss so heißenstd::cout<<(*(p_bla + i))[j]<<std::endl;Aber ich verstehe ehrlich gesagt nicht, warum ich erst dereferenzieren muss und dann indiezieren... Wieso muss es nicht andersherum sein?
-
Speedy_92 schrieb:
Ich habe es hinbekommen...
Es muss so heißenstd::cout<<(*(p_bla + i))[j]<<std::endl;Es kann so heissen.
Aber der Sinn dahinter verbirgt sich mir immernoch.

-
Vielleicht so?
for (int* p = &bla[0][0] ; p < &bla[2][2] ; ++p) cout << *p << " | " ;
-
drakon schrieb:
Speedy_92 schrieb:
Ich habe es hinbekommen...
Es muss so heißenstd::cout<<(*(p_bla + i))[j]<<std::endl;Es kann so heissen.
Aber der Sinn dahinter verbirgt sich mir immernoch.

Was meinst du damit?
Gibt es eine bessere/schnellere/sinvollere/einfachere Methode dies Problem zu lösen?
-
Speedy_92 schrieb:
Was meinst du damit?
Gibt es eine bessere/schnellere/sinvollere/einfachere Methode dies Problem zu lösen?Mann kann es sich beliebig kompliziert machen. Da bleibt der Fantasie fast keine Grenzen gesetzt.

Warum gibst du es denn nicht so aus:
int bla[3][2] = {{10, 12}, {1, 20}, {34, 32}}; for (int i = 0; i < 3; i++) for (int y = 0; y < 2; y++) std::cout << bla[i][y] << std::endl;
-
Ja, so weiß ich auch wie es geht

Nur brauchte ich es gerade, weil ich Pointer richtig verstehen muss

-
Also wenn schon Zeigernotation, dann aber auch bitte vollständig und nicht so etwas Halbes.
siehe hier:
int feld[2][2] = {1,2,3,4}; for (int i=0; i<2; i++) { for (int j=0; j<2; j++) { // cout << feld[i][j] << " "; // ist dasselbe wie: cout << (*(*(feld + i))+j) << " "; } cout << endl; }