Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 4
1

Ссылка на указатель в элементе массива

20.08.2020, 11:13. Показов 942. Ответов 5
Метки нет (Все метки)

Есть такая структура
C
1
2
3
4
5
6
7
typedef struct{
    uint8_t id;
    void* ptr_data;
    uint8_t time;
    uint8_t size;
    uint8_t delta;
}log_t;
не могу разобраться, как разыменовать указатель ptr_data и выполнить вычисление в данном фрагменте кода, в условии IF. Мне необходимо провести операцию вычисления для элемента массива. Но ничего не получается. Прошу помощи
C
1
2
3
4
5
6
7
8
for (j=0; j<(SIZE_LOG_DATA); j++)
{
if(((log_data+j)->ptr_data - log_id[j].param)>=difference[j])
                    {
                        log_data[j].ptr_data = &log_id[j].param;
                        log_data[j].time = rtc_get_ms();
                    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2020, 11:13
Ответы с готовыми решениями:

Имя массива в С++ это указатель или ссылка?
Пытаюсь понять что такое имя массива в С++! Указатель или ссылка? Сразу скажу что пока рассматриваю...

Указатель или ссылка на указатель. В чем разница?
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2()...

Указатель на список в элементе списка
Есть реализация списка с помощью структуры описывающей указатель на список, и структуры одного...

Ссылка на указатель на указатель
void TEST( int **&amp;refptr, int const &amp;N); int main() { int const N = 10; int i{ 0 }, b{ 2 },...

5
С чаем беда...
Эксперт CЭксперт С++
9263 / 4762 / 1289
Регистрация: 18.10.2014
Сообщений: 10,841
20.08.2020, 11:17 2
Цитата Сообщение от DrewSkow Посмотреть сообщение
не могу разобраться, как разыменовать указатель ptr_data
Вопрос бессмыслен и не имеет ответа, пока не будет предоставлена детальная информация о том, но что именно указывает ptr_data.

Что такое log_id[j].param? Почему в вопросе не приведена эта информация?

Цитата Сообщение от DrewSkow Посмотреть сообщение
Ссылка на указатель в элементе массива
Какое отношения этот заголовок имеет к содержимому вопроса?
0
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 4
20.08.2020, 11:24  [ТС] 3
Виноват, забыл указать.
C
1
2
3
4
typedef struct{
    uint8_t param;
    uint8_t id;
}log_id_t;
0
6739 / 4537 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
20.08.2020, 11:52 4
Цитата Сообщение от DrewSkow Посмотреть сообщение
не могу разобраться, как разыменовать указатель ptr_data и выполнить вычисление в данном фрагменте кода, в условии IF. Мне необходимо провести операцию вычисления для элемента массива. Но ничего не получается. Прошу помощи
C++
1
if ((*reinterpret_cast<uint8_t *>(log_data[j].ptr_data) - log_id[j].param) >= difference[j])
Добавлено через 2 минуты
Цитата Сообщение от DrewSkow Посмотреть сообщение
log_data[j].ptr_data = &log_id[j].param;
А зачем здесь вообще хранить указатель на log_id[j].param? Что ты пытаешься сделать?
Насколько я понимаю, здесь надо сохранять значение log_id[j].param, а не ссылку на него
0
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 4
20.08.2020, 12:07  [ТС] 5
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
C++
1
if ((*reinterpret_cast<uint8_t *>(log_data[j].ptr_data) - log_id[j].param) >= difference[j])
Добавлено через 2 минуты

А зачем здесь вообще хранить указатель на log_id[j].param? Что ты пытаешься сделать?
Насколько я понимаю, здесь надо сохранять значение log_id[j].param, а не ссылку на него
Спасибо, это правда хорошая идея, но у меня весь код на С. и это моя главная проблема.
C
1
if ((*reinterpret_cast<uint8_t *>(log_data[j].ptr_data) - log_id[j].param) >= difference[j])
.
У меня log_data[j].ptr_data - указатель, именно поэтому я и пытаюсь сохранить в него указатель на значение log_id[j].param, так как по другому у меня ничего не присваивалось
0
6739 / 4537 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
20.08.2020, 12:09 6
Лучший ответ Сообщение было отмечено DrewSkow как решение

Решение

Цитата Сообщение от DrewSkow Посмотреть сообщение
У меня log_data[j].ptr_data - указатель, именно поэтому я и пытаюсь сохранить в него указатель на значение log_id[j].param, так как по другому у меня ничего не присваивалось
C++
1
2
3
4
5
if (( ((uint8_t)log_data[j].ptr_data) - log_id[j].param)>=difference[j])
{
    log_data[j].ptr_data = (void *)log_id[j].param;
    log_data[j].time = rtc_get_ms();
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2020, 12:09

Указатель и ссылка
Помогите понять, немного запутался. #include&lt;iostream&gt; using namespace std; void ch1 (int...

Указатель == ссылка?
Добрый день. При реализации л/р нельзя использовать указатели вообще. Если я буду использовать...

Ссылка на указатель
Задам, скорее всего, глупый вопрос, однако хотелось бы разобраться. // ... { int *ptr =...

Указатель и ссылка
В общем вопрос достаточно простой, в чём разница указателя и сылки? С одной стороны указатель это...

Ссылка на указатель
Почему не работает такая конструкция? void SwapInt(void* p1, void* p2) { int* &amp;...

Указатель и ссылка
Почему выгодней использовать указатель а не ссылку при использовании массивов?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.