我尝试将地址存储在变量中.这个地址应该像一个数组.我从输入中获得的每个新数据都应该保存在变量+ index的地址中.
int RF = 0x15; // address array
int R2 = 0 ; // index
*(RF + R2) = 100;
Run Code Online (Sandbox Code Playgroud)
但是当我编译它时,我收到此错误:
错误:一元'*'的无效类型参数(有'int')
有谁有想法为什么?
要直接访问内存,需要将整数转换为指针.这不是隐含的.所以你必须写一些像
int RF = 0x15; // adresse array
int R2 = 0 ; // index
*((int*)RF + R2) = 100;
Run Code Online (Sandbox Code Playgroud)
然而,这确实假定该int
地址存在有效,这在大多数系统上似乎不太可能.在某些系统上,地址也必须对齐.
因此,如果访问的内存是硬件寄存器,那么这样的代码可能会有意义,在这种情况下,指针应该更改为volatile
.并且默认int
类型是有符号的,因此也没有任何意义,类似uint16_t
或uint32_t
应该使用.例:
*(volatile uint16_t*)0x15 = 100;
Run Code Online (Sandbox Code Playgroud)