我已经在一个函数中定义了一个bools数组(也有一个包含int数组的版本 - 不知道什么时候我想存储只有1和0)。如何将它传递给另一个返回其他东西然后该数组的函数?我尝试参考,但我收到了错误..
bool functionWithAltering (bool &(Byte[]), int...){
...
}
bool functionWhereSetting (.....) {
bool Byte[8];
....
if (!functionWithAltering(Byte, ...))
return 0;
bool Byte[16];
....
if (!functionWithAltering(Byte, ...))
return 0;
...
}
我得到的错误是:
error: declaration of ‘byte’ as array of references
error: expected ‘)’ before ‘,’ token
error: expected unqualified-id before ‘int’
非常感谢任何建议!
答案 0 :(得分:1)
只需声明functionWithAltering
,就像这样:
bool functionWithAltering (bool Byte[], int...) {
...
}
函数参数中的数组总是会衰减成指向第一个元素的指针 - 它们永远不会通过副本传递,因此您不必担心可能效率低下的副本。这也意味着调用者始终可以看到Byte[i]
内functionWithAltering()
的任何修改。
至于你对布尔数组的使用:如果你想存储的只是0或1,那么这是一个非常有效和明智的选择。
答案 1 :(得分:0)
对数组的引用的正确声明将采用以下方式
bool functionWithAltering( bool ( &Byte )[8], int...){
...
}
此外,不是将参数声明为引用数组,而是可以使用两个参数:指向数组的指针及其大小
bool functionWithAltering( bool Byte[], size_t size, int...){
...
}