c++ - 在函数中传递显式字符数组?

标签 c++ arrays function char explicit

我有一个字符数组

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 传递仅供引用,或按值参数复制到。

关于c++ - 在函数中传递显式字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941836/

相关文章:

c++ - clang-tidy:如何抑制 C 头文件中的 C++ 警告?

python - 用后续值填充数组

jquery - 为什么这个 mouseover jquery 代码不起作用?

python - 用Python管理大数据结构

javascript - jQuery - 代码结构 - 函数内的函数

C 编程 - 重复 scanf 直到仅输入数字

c++ - 在换行后从文件中打印出字符串

c++ - 在 C++ 中避免 void*

c++ - 如何在 .txt 文件中保存泰语

python - 使用较小的 N 维数组按列对 N 维 numpy 数组进行排序