我试过环顾四周但却无法找到答案。当我们使用双星号时,我发现了一些解释,**,但是,我不确定这是否适用于我的情况。
我遇到的嵌入式系统代码对我来说有些陌生:
port0 = *(volatile int *)(0x1C002100)
此操作的作用是读取地址为0x1C002100
的GPIO端口。然而,所有这些星号的交易是什么?
我会写这样的东西:
port0 = *0x1C002100
他们正在做某种类型的指针类型转换,因此我们使用2个星号吗?那是我最好的猜测。谢谢你的帮助!
答案 0 :(得分:2)
看一下表达式,它首先将一个整数常量转换为一个指针,然后它将deferred指向该指针,这将产生一个整数。它基本上与:
相同int *p = (volatile int *)(0x1C002100);
int n = *p;
port0 = n;
第一个*
表示指针类型,第二个是解除引用运算符。
但是第二行是无效的C代码,因为你不能取消引用整数。
port0 = *0x1C002100;