带有指针变量的地址数组

zwe*_*rg4 0 c gcc pointers

我尝试将地址存储在变量中.这个地址应该像一个数组.我从输入中获得的每个新数据都应该保存在变量+ index的地址中.

int RF = 0x15; // address array
int R2 = 0 ; // index
*(RF + R2) = 100;
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时,我收到此错误:

错误:一元'*'的无效类型参数(有'int')

有谁有想法为什么?

Lun*_*din 7

要直接访问内存,需要将整数转换为指针.这不是隐含的.所以你必须写一些像

int RF = 0x15; // adresse array
int R2 = 0 ; // index
*((int*)RF + R2) = 100;
Run Code Online (Sandbox Code Playgroud)

然而,这确实假定该int地址存在有效,这在大多数系统上似乎不太可能.在某些系统上,地址也必须对齐.

因此,如果访问的内存是硬件寄存器,那么这样的代码可能会有意义,在这种情况下,指针应该更改为volatile.并且默认int类型是有符号的,因此也没有任何意义,类似uint16_tuint32_t应该使用.例:

*(volatile uint16_t*)0x15 = 100;
Run Code Online (Sandbox Code Playgroud)