【发布时间】:2013-11-29 12:38:21
【问题描述】:
我遇到了指针和数组的问题。
在 delphi 中,如果我想要一个具有多种类型但数据相同的二维数组(它将指向相同的内存),我会使用 absolute :
arr_byte : array [1..2,1..80] of byte;
arr_word : array [1..2,1..40] of word absolute arr_byte;
所以我可以访问具有不同类型(字节、字、双字等)的相同数据。
现在我切换到 C++ 和 QT5,我不明白如何使它适用于二维数组。 对于我使用的普通数组
quint16 Tab_Unsigned[100];
qint16 *Tab_Signed[100];
*Tab_Signed= Tab_Unsigned;
然后我用
Tab_Unsigned[1]
(*Tab_Signed)[1]
访问数据,但我不知道如何为二维数组执行此操作。
有什么建议吗?
编辑:
正如 Igor Sevo 指出的那样,工会为此非常出色。
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
这正是我想要的!
【问题讨论】: