有什么区别:
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
只是一系列项目......
对于编译器来说,没有区别。
不过读起来不一样。[]
建议您要将数组传递给函数,而*
也可能只是一个简单的指针。
请注意,数组在作为参数传递时会衰减为指针(以防您还不知道)。
它们是相同的——完全是同义词。第二个是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])
都是等价的