首页 > 解决方案 > 在 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};

标签: c++arrayscharinitializerlist-initialization

解决方案


恐怕您尝试使用的初始化程序语法仅适用于变量声明。

可能的解决方案是声明一个新数组并使用 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;
}

推荐阅读