0

我有一个名为 datain 的 bitset<112> 填充在与主函数分开的函数中。我希望将位集拆分为 14 个字节的 uint8_t 数组,并将该数组返回给主函数。我写了一个 for 循环来做到这一点。我已经阅读了返回数组的指针,这是我最好的选择。

uint8_t* getDataArray()
{
    bitset<112> datain;

    // code to populate datin here

    i = 111;
    uint8_t *byteArray = new uint8_t[14];
    bitset<8> tempbitset;

    for (int j = 0; j<14; j++)
    {
        for (int k = 7; k >= 0; k--)
        {
            tempbitset[k] = datain[i];
            --i;
        }
        *byteArray[j] = tempbitset.to_ulong();
    }
    return byteArray;
}

int main()
{
    uint8_t* datain = getDataArray();
}

但是,这会产生编译错误

error: invalid type argument of unary '*' (have 'uint8_t {aka unsigned char}')|

在线上

*byteArray[j] = tempbitset.to_ulong();

但是根据我对指针的理解, byteArray[j] 是数据的地址,而 *byteArray[j] 是数据,所以这应该可以工作???

谢谢。

编辑以消除我的编译器在解决此错误后指出的另一个错误。

4

1 回答 1

1

因为你有一个指针,你不需要operator[]在数组上取消引用和使用。指针指向数组中的第一个元素。如果你想要另一个元素,你可以只使用下标运算符,而不用担心取消引用。

只需这样做:

byteArray[j] = tempbitset.to_ulong(); //write to position j in the array.  
于 2013-08-22T12:28:47.427 回答