Как вытащить const указатель из массива структур? - C (СИ)
Формулировка задачи:
Здравствуйте. Пишу на pic в mplab. Хочу вытащить const указатель из массива структур, чтобы сравнить его с другим const указателем... Компилятор ругается.
if(msg_vars[uc_index].ptr_mes == ptr_mes)
{
uc_sort = uc_index;
...
}
внутри структуры const unsigned char *ptr_mes. В функции ptr_mes - аналогично const unsigned char *ptr_mes
Решение задачи: «Как вытащить const указатель из массива структур?»
textual
Листинг программы
// Сообщение подобного характера уже выведено и время жизни сообщения ещё не закончено.
// Выходим из сортировки и записываем данные по этому индексу.
msg_vars[0].ptr_mes = ptr_mes;
if(msg_vars[uc_index].ptr_mes == msg_vars[0].ptr_mes)
{
uc_sort = uc_index;
break;
}
Объяснение кода листинга программы
- В данном коде происходит сортировка массива структур
msg_varsпо полюptr_mes. - Каждая структура
msg_varsсодержит указательptr_mesна сообщение. - В начале кода, вероятно, инициализируется массив структур
msg_varsи заполняется значениями. - Затем, в цикле, происходит сравнение указателей
ptr_mesкаждой структурыmsg_varsс указателемptr_mesпервой структурыmsg_vars. - Если указатели совпадают, то переменная
uc_sortполучает значениеuc_indexи цикл прерывается. - После выхода из цикла, в
uc_sortбудет содержаться индекс структуры, которая будет считаться отсортированной. - В данном случае, отсортированным считается первый элемент массива
msg_vars, так как его указательptr_mesсовпадает с указателемptr_mesпервой структурыmsg_vars. - Значение
uc_sortиспользуется для дальнейшей обработки отсортированного элемента массиваmsg_vars.