不要理解C':(regs_t *)cntl-> addr中对结构的引用

时间:2018-03-11 03:52:19

标签: c pointers struct

我正在审核包含该行的C代码,

volatile uart_regs_t* const regs = (uart_regs_t*) cntl->addr 

我不熟悉放置' *'在结构别名(uart_regs_t)的邻近和右侧。有人解释了这个陈述的部分吗?

2 个答案:

答案 0 :(得分:2)

  

我不熟悉放置' *'在结构别名(uart_regs_t)的邻近和右侧。有人解释了这个陈述的部分吗?

此语法是显式转换。当表达式的类型与要分配的变量的类型不同时使用它。

regs的类型为volatile uart_regs_t* const。除非cntl->addr的类型可以隐式转换为该类型,否则您必须使用显式强制转换。

答案 1 :(得分:0)

我在另一篇文章中找到了答案,

Is there a convention for pointer declarations in C?

答案是这三个语法是相同的,都是类型声明:

int*  ptr;
int  *ptr;
int * pt;