我正在审核包含该行的C代码,
volatile uart_regs_t* const regs = (uart_regs_t*) cntl->addr
我不熟悉放置' *'在结构别名(uart_regs_t
)的邻近和右侧。有人解释了这个陈述的部分吗?
答案 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;