我有一个字符数组
char theArray[] = { 0xAA, 0x01, 0x27, 0x08 };
我通常像这样传递数组
我的函数(theArray)
但我还有其他几个显式数组初始化。当我尝试做一个
我的函数({ 0xAA, 0x01, 0x27, 0x08 })
,
编译器说:
Error: excess elements in scalar initializer
如何直接传递我的显式数组?
最简单的方法是使用 std::array<unsigned char,4>
而不是 char[]
数组:
#include <array>
void myFunction(const std::array<unsigned char,4>& theArray) {
}
int main() {
myFunction({{ 0xAA, 0x01, 0x27, 0x08 }});
myFunction({{ 0xAA, 0x01, 0x27, 0x08 }});
}
Live Demo
为什么 unsigned char
?
值0xAA
不适合 signed char
,会出现编译错误。
为什么 const
?
因为您将从初始化列表中获得一个右值,所以它可以作为 const
传递仅供引用,或按值参数复制到。
我是一名优秀的程序员,十分优秀!