Я создаю функцию, которая примет параметр char и преобразует его в массив bool [8] [8]. Вот что моя функция выглядит как прямо сейчас:Переназначение многомерного массива в C++
void DotMatrix::displayCharacter(char c, bool doScrolling, int milliseconds){
bool pixelMap[8][8];
if (c == 'A'){
pixelMap = {
{0,0,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'B'){
pixelMap = {
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,0,0,0}
};
} else if (c == 'C'){
pixelMap = {
{0,0,0,1,1,0,0,0},
{0,0,1,0,0,1,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,0,1,0,0,1,0,0},
{0,0,0,1,1,0,0,0}
};
} else if (c == 'D'){
pixelMap = {
{0,1,1,1,0,0,0,0},
{0,1,0,0,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,1,0,0,0},
{0,1,1,1,0,0,0,0}
};
} else if (c == 'E'){
pixelMap = {
{0,1,1,1,1,1,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,1,1,1,1,0,0}
};
} else if (c == 'F'){
pixelMap = {
{0,1,1,1,1,1,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0}
};
} else if (c == 'G'){
pixelMap = {
{0,0,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,1,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,1,1,0,0,0}
};
} else if (c == 'H'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'I'){
pixelMap = {
{0,1,1,1,1,1,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,1,1,1,1,1,0,0}
};
} else if (c == 'J'){
pixelMap = {
{0,0,0,0,1,1,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,1,1,0,0,0}
};
} else if (c == 'K'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,1,0,0,0},
{0,1,0,1,0,0,0,0},
{0,1,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0},
{0,1,0,0,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'L'){
pixelMap = {
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,1,1,1,1,0,0}
};
} else if (c == 'M'){
pixelMap = {
{0,1,1,0,1,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'N'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,1,0,0,1,0,0},
{0,1,1,0,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,0,1,1,0,0},
{0,1,0,0,1,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'O'){
pixelMap = {
{0,0,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,1,1,0,0,0}
};
} else if (c == 'P'){
pixelMap = {
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0}
};
} else if (c == 'Q'){
pixelMap = {
{0,0,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,0,1,1,0,0},
{0,0,1,1,1,0,1,0}
};
} else if (c == 'R'){
pixelMap = {
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,0,0,0},
{0,1,0,1,0,0,0,0},
{0,1,0,0,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'S'){
pixelMap = {
{0,0,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,0,0,0},
{0,0,1,1,1,0,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,1,1,0,0,0}
};
} else if (c == 'T'){
pixelMap = {
{0,1,1,1,1,1,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0}
};
} else if (c == 'U'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,1,1,1,0,0}
};
} else if (c == 'V'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,0,1,0,0,0},
{0,0,1,0,1,0,0,0},
{0,0,1,0,1,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0}
};
} else if (c == 'W'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,0},
{0,1,1,0,1,1,0,0}
};
} else if (c == 'X'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,0,1,0,0,0},
{0,0,1,0,1,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,1,0,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0}
};
} else if (c == 'Y'){
pixelMap = {
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,0,1,0,1,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0}
};
} else if (c == 'Z'){
pixelMap = {
{0,1,1,1,1,1,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,1,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,1,0,0,0,0,0},
{0,1,0,0,0,0,0,0},
{0,1,1,1,1,1,0,0}
};
} else if (c == ' '){
pixelMap = {
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
}
if (doScrolling == 1){
scrollPixels(milliseconds, pixelMap);
} else {
displayPixels(milliseconds, pixelMap);
}
} Однако, когда я запускаю этот код в моей программе, она возвращает:
error: assigning to an array from an initializer list
Будет ли это загружать 26 массивов 8x8, по существу? Потому что у меня ограничено около 2048 байт ОЗУ. –
Ну, да. Массивы не появляются из воздуха. Технически это единый трехмерный массив, 26x8x8, который благодаря современной математике займет ровно столько же пространства, сколько 26 отдельных массивов 8x8. И, если вы объявите его статичным, он даже не будет потреблять ваше пространство в стеке! Плюс в качестве дополнительного бонуса, если вы закажете сейчас, вы сэкономите стоимость выполнения 26 последовательных сравнений, и вместо этого вы получите одно, маленькое математическое выражение. Какая сделка! –
Я думаю, что все, что ему нужно, это 26 * 8 * 8 байтов – macroland