gpt4 book ai didi

c - C : *(volatile int *) foo中 "asterisk type asterisk"的含义

转载 作者:行者123 更新时间:2023-11-30 21:35:20 25 4
gpt4 key购买 nike

我尝试环顾四周,但未能找到答案。我发现一些解释当我们使用双星号 ** 时,但是,我不确定这是否适用于我的情况。

我遇到过一些对我来说看起来有点陌生的嵌入式系统代码:

port0 = *(volatile int *)(0x1C002100)

这个操作的作用是读取地址为0x1C002100的GPIO端口。 。但是所有这些星号是怎么回事?

我会这样写:

port0 = *0x1C002100

他们是否正在进行某种类型的指针类型转换,因此我们使用 2 个星号?这是我最好的猜测。感谢您的帮助!

最佳答案

看看这个表达式,它首先将整型常量转换为指针,然后引用该指针,这将产生一个整数。它本质上与:

int *p = (volatile int *)(0x1C002100);
int n = *p;
port0 = n;

第一个*表示指针类型,第二个是解引用运算符。

但是第二行是无效的 C 代码,因为您无法取消引用整数。

port0 = *0x1C002100;

关于c - C : *(volatile int *) foo中 "asterisk type asterisk"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37117659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com