在看STM32的库函数时,有一C语言指针的问题:
typedef struct
{
__IO uint32_t CCR;
__IO uint32_t CNDTR;
__IO uint32_t CPAR;
__IO uint32_t CMAR;
} DMA_Channel_TypeDef;
首先先用typedef声明了DMA_Channel_TypeDef;
在一个函数的定义中void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct)
其中的形参DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct中定义指针变量时那个*号是紧挨着DMA_Channel_TypeDef的,而不是像平时普通的定义中那个*号是紧挨着变量名如:int *a;这个*号紧挨着DMA_Channel_TypeDef有什么特殊的含义吗?如果*号是紧挨着后面的变量名呢?我发现似乎只有用typedef声明过的才这样用,这是为什么呢?
还有就是普通的int *a;这类的*号可以紧挨着前面那个而不是紧挨着变量名吗?
有点印象似乎C语言中这是和运算符的结合顺序有关,但是不太确定。希望哪位高人能解答下,呵呵。 |