为什么这个宏体中存在类型转换?

Arr*_*row 3 c embedded microcontroller memory-address

我学习计算机工程,这里的老师总是告诉我们定义这样的μC地址:

#define FIO0DIR (* (unsigned int *) 0x2009C000) //GPIO direction register from the lpc1769

但他们从未真正解释过为什么或正在发生什么.

所以我的问题是:为什么演员阵容呢?

Sto*_*ica 5

为什么演员阵容?

因为0x2009C000是一个整数常量.不是地址.即使目标体系结构可能不是,C类型系统也会将整数与地址区分开来.它允许对它们进行各种约束的转换,但这两种类型不是同一个.

您需要使用强制转换将积分常量转换为正确的指针类型,因此您可以取消引用它并访问该地址处的内容.