What is the difference between:
void foo(item* list)
{
cout << list[xxx].string;
}
and
void this(item list[])
{
To the compiler, there is no difference.
It reads different though. []
suggests you want to pass an array to the function, whereas *
could also mean just a simple pointer.
Note that arrays decay to pointers when passed as parameters (in case you didn't already know).
FYI:
void foo(int (&a)[5]) // only arrays of 5 int's are allowed
{
}
int main()
{
int arr[5];
foo(arr); // OK
int arr6[6];
foo(arr6); // compile error
}
but foo(int* arr)
, foo(int arr[])
and foo(int arr[100])
are all equivalent
They are the same - completely synonymous. And the second is item list[]
, not item[]list
.
However it is customary to use []
when the parameter is used like an array and *
when it's used like a pointer.