Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: поместить массив в массив
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
sergey sva
привет всем.
Сейчас делаю программку для графического дисплея. Символы и буквы хранятся в массиве:
code unsigned char A1[9] = {0x80,0xE0,0x9C,0x13,0x13,0x9C,0xE0,0x80,0x00}; //À
code unsigned char A2[7] = {0x81,0xFF,0x89,0x89,0x89,0x73,0x00}; //Á
code unsigned char A3[7] = {0x81,0xFF,0x89,0x89,0x89,0x76,0x00}; //Â
code unsigned char A4[7] = {0x81,0xFF,0x81,0x01,0x01,0x07,0x00}; //Ã
code unsigned char A5[7] = {0xE0,0x31,0x2F,0x21,0x3F,0xE1,0x00}; //
Было бы не плохо поместить эти массивы в один массив чтобы один элемент соответствовал
одному из этих массивов.

Наподобие такого:

char arrr[5] = {

code unsigned char A1[9] = {0x80,0xE0,0x9C,0x13,0x13,0x9C,0xE0,0x80,0x00}; //À
code unsigned char A2[7] = {0x81,0xFF,0x89,0x89,0x89,0x73,0x00}; //Á
code unsigned char A3[7] = {0x81,0xFF,0x89,0x89,0x89,0x76,0x00}; //Â
code unsigned char A4[7] = {0x81,0xFF,0x81,0x01,0x01,0x07,0x00}; //Ã
code unsigned char A5[7] = {0xE0,0x31,0x2F,0x21,0x3F,0xE1,0x00}; //


};
как это заделать не соображу . подскажите пожалуйста.
zltigo
А слабо не думая почитать первоисточники:
char arrr[5][9] = { {
Сергей Борщ
Цитата(zltigo @ Jan 8 2008, 22:13) *
char arrr[5][9] = { {
Не очень эффективно - у него массивы разной длины, короткие будут дополнены нулями. Возможно, более эффективным будет либо массив указателей, либо одномерный с разбором на этапе исполнения.
rezident
Цитата(Сергей Борщ @ Jan 9 2008, 01:44) *
либо одномерный с разбором на этапе исполнения.
ИМХО одномерный массив, заполненный например структурами, состоящими из двух полей (количество байт в записи и сама запись), хорош только, если записи всегда извлекаются последовательно с начала массива. Если же требуется произвольный доступ к записям, то нужен еще один массив с индексами этих записей. Либо извлечение записей будет тормозить на переборе их всех каждый раз с начала массива.
SamHaris
В варианте предложенный zltigo
char arrr[][9] = { {
расходуются лишние байты на пустые нули в конце записи, только нужно выбрать ограничение ширины буковки.

В варианте предложенный Сергей Борщ
char* A1 = {
char* arrr[] = {A1,
расходуется память на размере указателя в осносном массиве, но его не удобно хранить в файле, так как смещение постоянно меняется.

rezident предлогает дело, в место нулей в конце, первый байт зарезервировать под размер масива или ширину буковки, что одно и тоже, тогда можно многоточие как за один символ воспринимать, или букву Ы забить.

ЗЫ. если юзается графический дисплей не лучше перейти на отрисовку линии, маштабируемость буковки повыситсчя.
zltigo
Цитата(SamHaris @ Jan 9 2008, 09:03) *
В варианте предложенный zltigo

Я не предлагал "вариант" хранеия фонтов, а просто прямо ответил на поставленый вопрос.
Сергей Борщ
Цитата(SamHaris @ Jan 9 2008, 09:03) *
В варианте предложенный Сергей Борщ
char* A1 = {
char* arrr[] = {A1,
расходуется память на размере указателя в осносном массиве, но его не удобно хранить в файле, так как смещение постоянно меняется.
Да, память на указатель расходуется. Я же и написал - надо считать, на что уйдет больше памяти - на указатели или заполнение нулями. Еще надо учитываать, что вариант с указателем требует дополнительного времени на чтение указателя. Насчет хранения в файле - не понял. Если фонт подгружаемый, то массив можно сформировать внешними программами какой угодно - хоть с таблицей смещений в начале.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.