Don';我不理解对';中结构的引用;C';:(法规*)cntl->;地址

Don';我不理解对';中结构的引用;C';:(法规*)cntl->;地址,c,pointers,struct,C,Pointers,Struct,我在复习C代码,它包含了这一行 volatile uart_regs_t* const regs = (uart_regs_t*) cntl->addr 我不熟悉将“*”放在结构别名附近和右侧的语法(uart\u regs\u t)。有人解释一下这句话吗 我不熟悉将“*”放在结构别名附近和右侧的语法(uart\u regs\u t)。有人解释一下这句话吗 此语法是显式强制转换。当表达式的类型不同于要分配给的变量的类型时,将使用该函数 regs的类型是volatile uart\u re

我在复习C代码,它包含了这一行

volatile uart_regs_t* const regs = (uart_regs_t*) cntl->addr 
我不熟悉将“*”放在结构别名附近和右侧的语法(
uart\u regs\u t
)。有人解释一下这句话吗

我不熟悉将“*”放在结构别名附近和右侧的语法(
uart\u regs\u t
)。有人解释一下这句话吗

此语法是显式强制转换。当表达式的类型不同于要分配给的变量的类型时,将使用该函数


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

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

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

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

(uart\u regs\u t*)
是一个cast,它告诉编译器将
cntl->addr
视为
uart\u regs\u t
的指针。我在另一篇文章中找到了我想要的答案: