Встретил в коде следующую конструкцию:
Код
ble_advdata_tk_value_t* oob_key;
err_code = nfc_tk_value_get(&oob_key);
где:
Код
typedef struct
{
uint8_t tk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing TK value in little-endian format. */
} ble_advdata_tk_value_t;
Код
ret_code_t nfc_tk_value_get(ble_advdata_tk_value_t ** pp_tk_value)
{
if (m_tag_match)
{
*pp_tk_value = &m_device_tk;
return NRF_SUCCESS;
}
else
{
return NRF_ERROR_NOT_FOUND;
}
}
Есть вопрос. Как все проговорить что тут происходит?
Есть тип структуры ble_advdata_tk_value_t. Создали переменную- указатель на этот тип: oob_key.
Дальше? Передаем не просто адрес (сам указатель oob_key), а именно адрес этого указателя? А в ф-ии уже принимаем указатель на указатель?
Разыменовывали на один уровень вверх и по тому значению присвоили адрес уже массива.
А проще никак?
err_code = nfc_tk_value_get(oob_key);
и приняли:
Код
ret_code_t nfc_tk_value_get(ble_advdata_tk_value_t * pp_tk_value)
{
if (m_tag_match)
{
pp_tk_value = &m_device_tk;
return NRF_SUCCESS;
}
else
{
return NRF_ERROR_NOT_FOUND;
}
}