6

有什么区别:

void foo(item* list)
{
    cout << list[xxx].string;
}

void this(item list[])
{
    cout << list[xxx].string;
}

假设项目是:

struct item
{
    char* string;
}

指针指向字符数组的第一个

并且list只是一系列项目......

4

3 回答 3

9

对于编译器来说,没有区别。

不过读起来不一样。[]建议您要将数组传递给函数,而*也可能只是一个简单的指针。

请注意,数组在作为参数传递时会衰减为指针(以防您还不知道)。

于 2012-05-25T20:22:17.160 回答
3

它们是相同的——完全是同义词。第二个是item list[],不是item[]list

[]然而,当参数像数组一样*使用和像指针一样使用时,习惯上使用它。

于 2012-05-25T20:21:59.947 回答
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])都是等价的

于 2012-05-25T20:35:35.150 回答