gpt4 book ai didi

c++ - 我有一个关于将 std::array 传递给函数的问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:00 25 4
gpt4 key购买 nike

我正在学习 C++,将 std::array 放入函数中的语法让我感到困惑。

#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;
}
  1. 想问一下const,它有什么作用,不使用有什么作用?

  2. 数组名已经是指针了,为什么还要用&n

最佳答案

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

void printArrayA(std::array<int, 5> n)

如果我调用 printArrayA 然后我传递给它的数组被复制,所以函数不能对我传递的数组进行更改,但有复制数组的开销。

void printArrayB(std::array<int, 5> &n)

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

void printArrayC(const std::array<int, 5> &n)

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

关于c++ - 我有一个关于将 std::array 传递给函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56412335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com