如何在 C++ 中声明和使用正确的 std::array
我有这个二维数组: array
如何在程序中正确声明它?
//I first include
#include <array>
然后我初始化它
array<array<int,4>,4> myarray = {{
{1, 2, 3, 4},
{5, 6, 0, 8},
{9, 10, 11, 12},
{13, 14, 15, 7}
}};
我声明我的函数:
void func1(array<array<int,4>,4> );
void func2();
void func3(int&, int&, array<array<int,4>,4>);
void func4(array<array<int,4>,4>);
void func5(array<array<int,4>,4>);
void func6(array<array<int,4>,4>);
编写一个主函数:
int main() {
func1(myarray);
func2();
func3(myarray);
func4(myarray);
func5(myarray);
func6(myarray);
return EXIT_SUCCESS;
}
然后我编写函数
void func1(array<array<int,4>,4> myarray)
{//something
}
void func2();
{//something
}
void func3(int&, int&, array<array<int,4>,4> myarray);
{//something
}
void func4(array<array<int,4>,4> myarray);
{//something
}
void func5(array<array<int,4>,4> myarray);
{//something
}
void func6(array<array<int,4>,4> myarray);
{//something
}
我在哪里错了吗?
重点是,初始化的数组: {1, 2, 3, 4}, {5, 6, 0, 8}, {9, 10, 11, 12}, {13, 14, 15, 7 }
将在第一个 func 中输入。第一个 func 的输出将是不同的 4x4 数组,例如 {15, 14, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {2 , 1, 4, 13}
。这个不同的数组将作为第二个的输入。这个函数的输出将是不同的等等,等等......
我遇到的问题是大多数函数的输出是初始化的大批。
感谢您提前的帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
过程是这样的。初始化数组:
然后,在
main
中调用func1
。funct1
的实现是:由于您将
变量(这称为按值传递),从逻辑上讲,它是全新的数组。如果要更改函数参数的值,可以使用引用或指针。如果是这样,您的函数的实现将是:
func1
声明为void
,这意味着它不返回值。数组<数组,4> myarray
是函数func1
的参数类型。当您从main
调用函数func1
时,从main
函数传递的变量将被复制到func1
的 >myarray&
符号表示myarray
是您传递给函数的变量的引用。因此,如果在函数func1
中,您修改了myarray
的值,那么main
函数中的数组也会被修改(因为您修改了值在函数func1
中)。The process goes like this. You initialize your array:
Then, in
main
, you callfunc1
. The implementation offunct1
is:Since you declared
func1
asvoid
that means that it does not return a value.array<array<int,4>,4> myarray
is type of the argument of functionfunc1
. When you call functionfunc1
frommain
, the variable you pass frommain
function will be copied into themyarray
variable offunc1
(this is called pass by value), and logically, it is totally new array. If you want to change values of your function arguments you can use references or pointers. If so, implementation of your function will be:The
&
symbol means thatmyarray
is reference of the variable you passed to the function. So if, in functionfunc1
, you modify values ofmyarray
, then array in yourmain
function will be also modifed (because you modified the values in functionfunc1
).