C++ 指向同一内存的两个不同类型的二维数组

C++ 指向同一内存的两个不同类型的二维数组,c++,delphi,qt5,C++,Delphi,Qt5,指针和数组有问题 在delphi中,如果我想要一个具有多种类型但数据相同(它将指向相同的内存)的二维数组,我将使用绝对值: arr_byte : array [1..2,1..80] of byte; arr_word : array [1..2,1..40] of word absolute arr_byte; 因此,我可以访问不同类型(字节、字、dword等)的相同数据 现在我切换到C++和QT5,我无法理解如何使它适用于二维数组。 对于普通数组,我使用 quint16 Tab_Unsig

指针和数组有问题

在delphi中,如果我想要一个具有多种类型但数据相同(它将指向相同的内存)的二维数组,我将使用绝对值

arr_byte : array [1..2,1..80] of byte;
arr_word : array [1..2,1..40] of word absolute arr_byte;
因此,我可以访问不同类型(字节、字、dword等)的相同数据

现在我切换到C++和QT5,我无法理解如何使它适用于二维数组。 对于普通数组,我使用

quint16 Tab_Unsigned[100];

qint16  *Tab_Signed[100];

*Tab_Signed= Tab_Unsigned;
然后我用

Tab_Unsigned[1]
(*Tab_Signed)[1]
来访问数据,但我不知道如何对二维数组进行访问

有什么建议吗

编辑:

正如伊戈尔·塞沃所指出的,工会在这方面的工作非常出色

union Data
{
    qint16 q_int16[2][2];
    quint16 q_uint16[2][2];
    qint8 q_int8[2][4];
    quint8 q_int8[2][4];
};

union Data u_data;

u_data.q_int16[1][0] = -1;

qDebug() << u_data.q_uint16[1][0]; // prints  65535
qDebug() << u_data.q_int16[1][0];  // prints -1
qDebug() << u_data.q_int8[1][0];    // prints -1
qDebug() << u_data.q_int8[1][1];    // prints -1
qDebug() << u_data.q_uint8[1][0];   // prints 255
qDebug() << u_data.q_uint8[1][1];   // prints 255
联合数据
{
qint16 q_int16[2][2];
五次16 q_uint16[2][2];
qint8 q_int8[2][4];
quint8 q_int8[2][4];
};
联合数据;
u_data.q_int16[1][0]=-1;

qDebug()C中的二维数组实际上是具有不同索引的一维数组。可以使用函数根据矩阵索引确定数组中的索引。例如,可以使用
index=i*n+j
查找索引


您也可以尝试使用。

在C/C++中有数组:

quint16 BiUnsigned[100][10];
// ...
qint16 **BiSigned = static_cast<qint16**>(BiUnsigned);
16双无符号[100][10];
// ...
qint16**BiSigned=静态_转换(BiUnsigned);