Das Beispiel von Trigger ist eher C-Code, C++ bietet die Möglichkeit, automatisch Referenzen aufzulösen:
C-Code:
Code: Alles auswählen
void foo(int (*x)[]) // die Klammern sind wichtig, sonst ist x ein Array von int*
{
(*x)[4] = 42;
}
int x[10];
int main(int argv, char** argc)
{
foo(&x); // oder auch foo(x), wenn x ein array ist, sind &x und x identisch
printf("%i\n", x[4]);
return 0;
}
Um sich die Referenz beim Funktionsaufruf und das Dereferenzieren in der Funktion zu sparen,
kann man dies in C++ auch schreiben als:
Code: Alles auswählen
#include <cstdio> // besser: #include <iostream>
void foo(int (&x)[10])
{
x[4] = 42;
}
int x[10];
int main(int argc, char** argv)
{
foo(x);
printf("%i\n", x[4]); // besser: std::cout << x[4] << std::endl;
return 0; // oder auch return '^'^'^'; :-)
}