違いは何ですか:
void foo(item* list)
{
cout << list[xxx].string;
}
と
void this(item list[])
{
cout << list[xxx].string;
}
アイテムが次のとおりであると仮定します。
struct item
{
char* string;
}
文字配列の最初のポインタを指す
list
単なるアイテムの配列です...
違いは何ですか:
void foo(item* list)
{
cout << list[xxx].string;
}
と
void this(item list[])
{
cout << list[xxx].string;
}
アイテムが次のとおりであると仮定します。
struct item
{
char* string;
}
文字配列の最初のポインタを指す
list
単なるアイテムの配列です...
コンパイラにとって、違いはありません。
読み方は違うけど。[]
関数に配列を渡すことを示唆していますが*
、単なるポインターを意味することもあります。
配列は、パラメーターとして渡されるとポインターに減衰することに注意してください (まだわかっていない場合)。
それらは同じです - 完全に同義です。2 つ目はitem list[]
ではありませんitem[]list
。
[]
ただし、パラメーターが配列のように*
使用される場合と、ポインターのように使用される場合に使用するのが通例です。
ご参考までに:
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
}
しかしfoo(int* arr)
、foo(int arr[])
とfoo(int arr[100])
はすべて同等です