C++*vs []作为函数参数

Fle*_*515 6 c++ arrays parameters struct pointers

有什么区别:

void foo(item* list)
{
    cout << list[xxx].string;
}
Run Code Online (Sandbox Code Playgroud)

void this(item list[])
{
    cout << list[xxx].string;
}
Run Code Online (Sandbox Code Playgroud)

假设项目是:

struct item
{
    char* string;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Luc*_*ore 9

对编译器来说,没有区别.

它虽然看起来不一样.[]建议你想要一个数组传递给函数,而*也可能只是一个简单的指针.

请注意,当作为参数传递时,数组会衰减为指针(如果您还不知道).

  • 最好从标准中添加文本,以免给任何人以印象,数组和指针通常是相同的。功能参数只是一种特殊情况,标准中声明“在确定每个参数的类型之后,将类型为“ T的数组”的任何参数调整为“指向T的指针”。[dcl.fct] 8.3.5 / 5。 (2认同)