以下函数调用中的(unsigned char *)& ch是什么意思?
HAL_UART_Transmit(&UartHandle, (unsigned char *)&ch, 1, 0xFFFF);
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, unsigned char *pData, int Size, long Timeout)
{
/*...........Function Body ........*/
}
答案 0 :(得分:3)
&ch
是某个变量的地址,给定此代码,类型未知。 (unsigned int*)&ch
只是将此表达式的结果转换为指向int
的指针。
答案 1 :(得分:2)
使用address-of运算符ch
获取变量&
的地址。然后将得到的地址转换(强制转换)为类型unsigned int *
,即指向unsigned int的指针。只有
ch
的类型不是unsigned int
以ch
的尺寸至少与unsigned int
unsigned int *
参数因为我们可以看到参数的类型实际上是uint8_t *
,所以这很可能是一个错误。应该删除广告素材(如果ch
已经是uint8_t
类型,它应该是)或更改为uint8_t *
。此外,函数的参数应为const
,传递函数不应改变其参数。
答案 2 :(得分:0)
假设您有一个带有unsigned int *
类型参数的函数。
您有一个int
类型的对象,并且您希望将该函数的指针传递给该对象。
int ch = 42;
然后&ch
为int *
对象提供int
。您无法将&ch
直接传递给您的函数,因为&ch
类型为int *
,但该函数需要unsigned int *
,因此您需要将其转换为unsigned int *
:
(unsigned int *) &ch