Assign a large portion of a multidimensional byte array

I have an alphabet defined as such:

#define A { \
    {0, 0, 0, 1, 1, 0, 0, 0}, \
    {0, 0, 1, 0, 0, 1, 0, 0}, \
    {0, 0, 1, 0, 0, 1, 0, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}, \
    {0, 1, 1, 0, 0, 1, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0} \
}

and I can combine them into a 3-dimensional byte array like this:

byte patterns[10][8][8] = {SPACE, G,O,SPACE,B,L,U,E,SPACE,SPACE};

But how can I assign new values to it, without creating an entire new byte array? This is what I'm trying to do:

patterns[10][][] = {SPACE, G,O,SPACE,O,H,I,O,SPACE,SPACE};

I am trying to save space. I currently have 3 separately declared byte arrays and I only use them one at a time, so I could definitely just reassign the values for each array.

I am trying to save space. I currently have 3 separately declared byte arrays and I only use them one at a time, so I could definitely just reassign the values for each array.

Don't. Use pointers, instead. Point to different arrays.

Thanks for the response. But I'm not familiar with how I would use pointers. Could you show me how I would implement this?

Before you go there, A in your first post takes up at least 64 bytes of precious RAM, but only represents eight bytes of data.
I'd fix that first.

Before you go there, A in your first post takes up at least 64 bytes of precious RAM, but only represents eight bytes of data.
I'd fix that first.

Yeah I'd try that, but I'd have to alter a lot of later code. And I'm concerned about the RAM, isn't the alphabet stored in the Flash?

isn't the alphabet stored in the Flash?

Did you tell the compiler to store it in flash?
(It's difficult for us to tell, because you didn't post all your code)