Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
 Аватар для smdr@narod.ru
0 / 0 / 0
Регистрация: 02.11.2025
Сообщений: 7

Не могу получить правильные значения из указателя

03.11.2025, 12:19. Показов 1908. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Глобально задекларирована структура "font_param" с полем uint8_t *FontTable;
 
//Задача получить указатель на массив шрифта и с ним работать.
 
font_param.FontTable = (uint8_t *)&FontTable08x16;// Получение указателя на массив - таблицу символов (букв) 
//"const uint8_t FontTable08x16[] PROGMEM = {0xff,....... массив шрифта...}
uint8_t *Table; //Далее, декларируем вспомогательный указатель       
Table = font_param.FontTable; //Копируем один указатель в другой 
//Выводим на дисплей что получилось        
char weld_msg[21];
sprintf(weld_msg, "size=%d,address=%d,symbol=%c", sizeof(Table), (uint16_t )Table, Table[81]); //81 - номер буквы "A" в массиве.
Display_String(weld_msg, NEW_LINE); //Вывод на дисплей
//В результате на дисплее получаем правильные данные:
size=2,adr=8628,sym="A" //Получаю корректный символ "A" из таблицы шрифтов.
 
//Но если же пытаемся вывести на дисплей используя поле из структуры "font_param.FontTable" напрямую, то получаем 
//неправильные данные.
font_param.FontTable = (uint8_t *)&FontTable08x16; // Получение указателя на массив - таблицу символов (букв) 
//const uint8_t FontTable08x16[] PROGMEM....
char weld_msg[21];
sprintf(weld_msg, "s=%d,address=%d,symbol=%c", sizeof(font_param.FontTable), (uint16_t )font_param.FontTable, font_param.FontTable[81]);
Display_String(weld_msg, NEW_LINE); //Вывод на дисплей
 
//В результате на дисплее получаем НЕ правильные данные:
 
size=2,address=8628,symbol="" (т.е. symbol="Пусто") //Размер и адрес тот же, а массив как будто не читается в части содержимого....
 
//В чем может быть причина? 
//Создавал указатель с названием "font_param.FontTable2" в той же структуре, и использовал как в первом 
//варианте для перезаписи, - всё нормально работает. Т.е., если скопировать содержимое из одного указателя в другой, 
//- все нормально работает. Если использовать указатель сразу, - не работает.
//То ли с выравниванием что то. В Microchip Studio в настройках галочка "-fpack-struct" снята. Я новичек в C.
//Спасибо. Кто направит куда копать .....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.11.2025, 12:19
Ответы с готовыми решениями:

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

Не могу через указатель на двумерный массив вернуть все значения в другой массив
Не могу через указатель на двумерный массив вернуть все значения в другой массив возвращается...

Почему нельзя двумерный массив преобразовывать в указатель на указатель?
Имеем массив: int daytab; при передаче его в функции количество столбцов должно быть определено:...

20
04.11.2025, 18:49
Студворк — интернет-сервис помощи студентам

Не по теме:

Довольно стандартный этап в развитии юного цифрового дарования. От думал что обнаружил Мистическую Тайну и Страшную Ошибку Компилятора, которые навсегда впишут его имя в аналы компьютерной истории, рядом с фон Нейманом и остальным Ко. А оказалось, как это обычно и бывает в 99.9% случаев, что это он сам накосячил, причем совершенно по детски. Но, разумеется, виноваты проблемные форумы и проклятые пустозвоны: это они, снедаемые чёрной завистью, зарубили полёт молодого продиджи еще на самом взлёте...
Не знаю почему, но эта модель поведения цветет особо буйным цветом именно в программировании микроконтроллеров.



Не по теме:

Есть еще, конечно, вариант, что это кто-то из наших известных трололо пытается устроить очередной бенефис, но я лично склоняюсь к вышеописанное версии.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2025, 18:49
Помогаю со студенческими работами здесь

Разобрать указатель на указатель
пытаюсь разобраться в следующей сроке: struct Node **head; это что-то вроде массива...

Передать в функцию указатель на указатель
Добрый день, В main я создаю указатель на строку, память для которой хочу выделить внутри другой...

Динамические матрицы (указатели на указатели)
Никак не могу осознать указатели на указатели. Вот есть объявление double **A; Потом следует ...

Как записать константный указатель на указатель
Добрый вечер. Вот данная запись говорит. Указатель на константный указатель типа Int. int *...

Запись указателей в массив указателей
Ребята, подскажите, пожалуйста, что не так сделано? Задача: без использования библиотек распарсить...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru