有什么区别:
void foo(item* list)
{
cout << list[xxx].string;
}
和
void this(item list[])
{
cout << list[xxx].string;
}
假设项目是:
struct item
{
char* string;
}
指针指向第一个字符数组
和list
只是一个项目数组......
答案 0 :(得分:8)
对于编译器,没有区别。
虽然看起来不一样。 []
表示您希望将数组传递给函数,而*
也可能只是一个简单的指针。
请注意,当作为参数传递时,数组会衰减为指针(如果您还不知道的话)。
答案 1 :(得分:3)
它们是相同的 - 完全是同义词。第二个是item list[]
,而不是item[]list
。
然而,当参数像数组一样使用[]
时,习惯使用*
,而像指针一样使用{{1}}。
答案 2 :(得分:1)
供参考:
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])
都是等效的