typedef struct iomFixedPIA
{
UINT16 state; /* State */
UINT16 modStatus;/* Module status*/
} IOM_FIXED_PIA;
#define IOM_PIA_SIZE 256 /* Size of PIA per IO module */
typedef char CM_IOM_PIA [IOM_PIA_SIZE]; /* PIA for one module */
printf("Actual PIA address from PIA offset = %x modid: %d and pPIA: %x \n",
CI856_CM_ADRS(CI856_PIA_OFFSET), pParMsg->modId,
((CI856_CM_ADRS(CI856_PIA_OFFSET)) + pParMsg->modId) );
pMod->pPIA = (IOM_FIXED_PIA *)
((CM_IOM_PIA *) (CI856_CM_ADRS(CI856_PIA_OFFSET)) + pParMsg->modId);
// question here ^^
printf(" pMod PIA= %x \n", pMod->pPIA);
如果我运行上面的代码,我会得到如下输出。
Actual PIA addres from PIA offset = 300051c modid: 1 and pPIA: 300051d
pMod PIA= 300061c and POA= 3007020
我的问题是。
- 当我们在上面键入 caste 以键入 (CM_IOM_PIA *) 时,为什么我们看到的值是 300061c 而不是 300051d?
- 如果我们在类型转换 (CM_IOM_PIA *) 之后对 (IOM_FIXED_PIA *) 进行类型转换,为什么地址没有变化?
- 一般来说,如果我们进行类型转换,地址是否会发生变化?