Hur skickar man en tvådimensionell array i c++?

Permalänk
Medlem

Hur skickar man en tvådimensionell array i c++?

Hur skickar man en tvådimensionell array mellan funktioner i c++?

t.ex.

.... int test[1][2]; test[0][0]=3; test[0][1]=2; skriv_ut(???????) } skriv_ut(?????????) { cout<<test[0][0]<<test[0][1]; }

Hur gör man? vad skriver man istället för "????".

Permalänk
Medlem

Du kan inte skicka en pekare?

Permalänk

det finns ingen foreach i c++ eller?

Permalänk
Medlem

Om jag minns min c++utbildning rätt så kan man skriva så här:

skriv_ut(test); skriv_ut(&test) { cout<<test[0][0]<<test[0][1]; }

Funktionern tar emot adressen till arrayen och sparar den i en referens. Dvs: test i funktionen blir samma test som utanför funktionen. Ändrar du något i test i funktionen så sker förändringarna för test utanför funktionen också.

Visa signatur

Citera mig om du vill att jag ska hitta tillbaka!

Permalänk
Medlem

det finns extremt många sätt att skicka en array ..
t.ex.
void skriv_ut(int a[WIDTH][HEIGHT]) som man anropar skriv_ut(arrayen);

när man skickar dynamiska arrayer skickar man den oftast som pointer-to-pointer (**array)

Permalänk
Medlem

Notera att en array per definition är en pekare och kommer alltid underförstått att skickas som en pekare om inte annat anges.

Här är ytterligare några sätt att skicka en tvådimensionell array till en funktion.

#include <iostream> using namespace std; void skriv_ut_1(int test[1][2]){ cout<<test[0][0]<<endl; } void skriv_ut_2(int test[][2]){ cout<<test[0][0]<<endl; } void skriv_ut_3(int (*test)[2]){ cout<<test[0][0]<<endl; } void skriv_ut_4(int (&test)[1][2]){ cout<<test[0][0]<<endl; } template<int X, int Y> void skriv_ut_5(int (&test)[X][Y]){ cout<<test[0][0]<<endl; } int main(){ int test[1][2]; test[0][0]=3; test[0][1]=2; skriv_ut_1(test); skriv_ut_2(test); skriv_ut_3(test); skriv_ut_4(test); skriv_ut_5(test); }

Visa signatur

There is no end to the infinite number of stupid things that could be done on a Turing complete system.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av M2
Notera att en array per definition är en pekare och kommer alltid underförstått att skickas som en pekare om inte annat anges.

En array är per definition en array. När man skickar den som argument till en annan funktion skickas dock en pekare till första elementet i arrayen.