"int *i[]" ist dasselbe wie "int **i".
Disclaimer: Das gilt nur in der Parameterliste einer Funktion. Im Allgemeinen ist
int* [] etwas komplett anderes als
int**. Aber in der Parameterliste einer Funktion macht
[] effektiv das selbe wie
*.
Also
|
C-/C++-Quelltext
|
1
|
int* p;
|
und
|
C-/C++-Quelltext
|
1
|
int a[];
|
sind zwei komplett verschiedene Dinge. Aber
|
C-/C++-Quelltext
|
1
|
void f(int* a);
|
und
|
C-/C++-Quelltext
|
1
|
void f(int a[]);
|
deklariert in beiden Fällen die selbe Funktion, weil C und C++ eine spezielle Regelung haben die vorschreibt dass
[] in Parameterlisten von Funktionen zu
* werden. Motivation hinter diesem Verhalten war wohl, zu erreichen dass Arrays immer by-reference übergeben werden.
Einer der Gründe, wenn nicht sogar der Hauptgrund, wieso built-in Arrays leider ziemlich unintuitiv sind...
|
C-/C++-Quelltext
|
1
|
int main(int argc, char* argv[]);
|
ist also das selbe wie
|
C-/C++-Quelltext
|
1
|
int main(int argc, char** argv);
|