我有一个关于将 std::array 传递到函数中的问题

Quố*_*ờng 2 c++

std::array我正在学习 c ++ 并且将 a放入函数的语法让我感到困惑。

#include <iostream>
#include <array>

using namespace std;

void printArray(const std::array<int, 5> &n)
{
    std::cout << "length: " << n.size() << endl;

    for (int j = 0; j < n.size(); j++ )
    {
        cout << "n[" << j << "] = " << n[j] << endl;
    }

}

int main()
{

    array<int, 5> n = {1,2,3,4,5};

    printArray(n);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我想问一下const,它起什么作用,如果不使用它有什么作用?

  2. 当数组的名称已经是指针时,为什么我们必须使用 &n

t.n*_*ese 5

根据参数,您可以对函数做出某些假设。

void printArrayA(std::array<int, 5> n)
Run Code Online (Sandbox Code Playgroud)

如果我调用printArrayA,那么我传递给它的数组将被复制,因此该函数无法对我传递的数组进行更改,但会产生复制数组的开销。

void printArrayB(std::array<int, 5> &n)
Run Code Online (Sandbox Code Playgroud)

如果我调用,则不会printArrayB复制传递给它的数组,该函数可以对数组或数组中存储的元素进行更改。

void printArrayC(const std::array<int, 5> &n)
Run Code Online (Sandbox Code Playgroud)

如果我调用printArrayC,那么我传递给它的数组不会被复制,并且因为它是const函数,所以无法对该数组或其元素进行任何更改。(嗯,理论上,我可以放弃const,但这不是应该做的事情, aconst应该指示调用者,该对象不会被更改)