我正在阅读一个与硬件寄存器接口的 C 程序。该人一直在使用十六进制数字作为数组的索引,例如:
app_base_add[0x30]
我知道 a[i] 表示 *(a+i) 即 *(a+(i*sizeof( typeof (a)))) 所以十六进制索引可能是地址空间中所需内存位置的偏移量 wrt app_base_add .
这是正确的吗?
并且还给出了,说:
#define mm2s_start_add 0xc0000000;
这些作业在使用上有何不同?
volatile unsigned int *app_base_add;
app_base_add[0x30>>2]=0x1;
app_base_add[0x30>>2]=1<<2;
app_base_add[0x30>>2]=((unsigned int)mm2s_start_add); //is this assignment valid??
app_base_add[0x30>>2]=((unsigned int *)mm2s_start_add);