Что означает *(uint8_t*)(&pbuf)? - C (СИ)
Формулировка задачи:
Всем привет,
Что делается в выражении
???
Спасибо.
uint8_t *pbuf uint8_t memtype;
memtype = *(uint8_t*)(&pbuf);
Решение задачи: «Что означает *(uint8_t*)(&pbuf)?»
textual
Листинг программы
uint16_t hal_nrf_read_multibyte_reg(uint8_t reg, uint8_t *pbuf)
{
uint8_t ctr, length;
uint8_t memtype;
uint8_t read_byte; /*lint -esym(530,read_byte) symbol not initialized*/
bool first_round;
first_round = true;
memtype = *(uint8_t*)(&pbuf);
switch(reg)
{
case HAL_NRF_PIPE0:
case HAL_NRF_PIPE1:
case HAL_NRF_TX:
length = ctr = hal_nrf_get_address_width();
CSN_LOW();
hal_nrf_rw(RX_ADDR_P0 + reg);
break;
case HAL_NRF_RX_PLOAD:
reg = hal_nrf_get_rx_data_source();
if (reg < 7U)
{
length = ctr = hal_nrf_read_rx_payload_width();
CSN_LOW();
hal_nrf_rw(R_RX_PAYLOAD);
}
else
{
ctr = length = 0U;
}
break;
default:
ctr = length = 0U;
break;
}
if (memtype == 0x00U)
{
uint8_t data *buf = (uint8_t data *)pbuf;
NRF_READ_MULTIBYTE_REG_COMMON_BODY
}
else if (memtype == 0x01U)
{
uint8_t xdata *buf = (uint8_t xdata *)pbuf;
NRF_READ_MULTIBYTE_REG_COMMON_BODY
}
else if (memtype == 0xFEU)
{
uint8_t pdata *buf = (uint8_t pdata *)pbuf;
NRF_READ_MULTIBYTE_REG_COMMON_BODY
}
else
{
uint8_t *buf = (uint8_t *)pbuf;
NRF_READ_MULTIBYTE_REG_COMMON_BODY
}
CSN_HIGH();
return (((uint16_t) reg << 8) | length);
}