c++ - 在 C++ 中声明和初始化 char 数组
问题描述
我正在尝试在 if else 块中声明和初始化一个 unsigned char arr,但我看到“无法在赋值中将 '' 转换为 'unsigned char'”错误。谁能帮我理解这有什么问题?我是 C++ 新手。
编辑:
unsigned char arr[4];
if (..){
arr[4] = {0x0F, 0x0F, 0x0F, 0x0F};
} else {
arr[4] = {0xFF, 0xFF, 0xFF, 0xFF};
}
走下面的路没有任何问题。但是我需要在 if-else 中进行分配,所以我想了解上面的代码片段有什么问题?
unsigned char arr[4] = {0xFF, 0xFF, 0xFF, 0xFF};
解决方案
恐怕您尝试使用的初始化程序语法仅适用于变量声明。
可能的解决方案是声明一个新数组并使用 memcpy 复制它
#include <iostream>
#include <cstring>
int main()
{
unsigned char arr[4] = {0x0F, 0x0F, 0x0F, 0x0F};
if (elsecondition){
unsigned char arr1[4] = {0xFF, 0xFF, 0xFF, 0xFF};
memcpy(arr, arr1, sizeof(arr));
}
return 0;
}
或一次做一个元素的分配
#include <iostream>
int main()
{
unsigned char arr[4] = {0x0F, 0x0F, 0x0F, 0x0F};
if (elsecondition){
// we can use a loop, since all values are identical
for (int i = 0; i < sizeof(arr); ++i)
arr[i] = 0xFF;
}
return 0;
}
推荐阅读
- flutter - StreamBuilder 错误 Stream 已被监听
- javascript - 对于 html 画布,如何使用带有文本作为路径的 clip()?
- rocksdb - RocksDBException:不存在
- linux - .Net 5 - 无法在 buster (Debian) 容器中启用全球化
- node.js - Express Js - 按需连接MongoDB数据库
- angular - 当我添加一些数据而不重新加载页面时,如何重新渲染或重新加载这个子组件表?
- sql - 查找浮点列的最大比例和精度
- matlab - 如何使用 GigE Vision 支持连接 IDS uEye 相机 (ui-5490)?
- reactjs - 错误:使用 Next.js 默认加载器的图像优化与“下一个导出”不兼容
- c++ - CodeSignal:c ++超出了执行时间限制