请解释下这条C语言程序:*((unsigned long *) ((unsigned long)(&CAN0TXIDR0))) = ID

发布网友

我来回答

1个回答

热心网友

这个分解来看。
1. (&CAN0TXIDR0) 取CAN0TXIDR0的地址。

2. ((unsigned long)(&CAN0TXIDR0)) 将CAN0TXIDR0的地址的地址强制转化成无符号的long类型。

3. ((unsigned long *) ((unsigned long)(&CAN0TXIDR0))) 将上面的无符号long类型强行转换成一个指向unsigned long 类型的指针。

4. *((unsigned long *) ((unsigned long)(&CAN0TXIDR0))) = ID 然后对上面得到的指针指向的变量赋值。

(unsigned long *)就如第三项,将一个值强制转换成“一个指向unsigned long类型的指针(地址)”。

热心网友

这个分解来看。
1. (&CAN0TXIDR0) 取CAN0TXIDR0的地址。

2. ((unsigned long)(&CAN0TXIDR0)) 将CAN0TXIDR0的地址的地址强制转化成无符号的long类型。

3. ((unsigned long *) ((unsigned long)(&CAN0TXIDR0))) 将上面的无符号long类型强行转换成一个指向unsigned long 类型的指针。

4. *((unsigned long *) ((unsigned long)(&CAN0TXIDR0))) = ID 然后对上面得到的指针指向的变量赋值。

(unsigned long *)就如第三项,将一个值强制转换成“一个指向unsigned long类型的指针(地址)”。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com