LED Matrix - Accessing Arrays

Hows it !

Hoping you guys can assist me…

Im busy working on an LED matrix but im having some coding issues.
The matrix is driven by 2x 74HC595 .

The problem i am having is accessing my array .
Here is my code so far - Any advice or better ways to do things would be appreciated.

int latchPin = 8;

int clockPin = 12;

int dataPin = 11;
int count = 0;
int row[] = {B11111110,B11111101,B11111011,B11110111,B11101111,B11011111,B10111111,B01111111};
int H[] = {B01100110,B01100110,B01100110,B01111110,B01111110,B01100110,B01100110,B01100110,};
int E[] = {B01111110,B01111110,B01100000,B01111110,B01111110,B01100000,B01111110,B01111110};
int L[] = {B01100000,B01100000,B01100000,B01100000,B01100000,B01100000,B01111110,B01111110};
int O[] = {B01111110,B01111110,B01100110,B01100110,B01100110,B01100110,B01111110,B01111110};
int space[] = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
char message[6] = "HELLO";
void setup() {
  //Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
 
    matrixwrite(0 , 0 , 0 , 0);
    count++;
    if(count > 5 ){ // keep track of which character will be written to the display next  
     count = 0;}
  delay(0);
  
}

  void matrixwrite(int counter , int y , int z , int a ){ // Additional integers for use later on 
  while(counter < 200){
    
  for(int i = 0 ; i < 8 ; i++){  
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, row[i]);
  shiftOut(dataPin, clockPin, LSBFIRST, H[i]); // <<----
  digitalWrite(latchPin, HIGH);
  delay(a); // Speed each line is written
  counter++;
  //Serial.print(counter);
  //Serial.print("     ");
  }
  }
  //Serial.println("Exit");
}

inside the code where i commented in the arrow is where im having the problem . ideally i would love to access the array something like char or int and just change the char/int to access a different array but that is clearly not allowed …
What is the correct way to do this ?
if i left anything out let me know and i’ll add it in .
Thanks in advance.

This way it should write "HELLO ", I have no way to verify.

const byte latchPin = 8;
const byte clockPin = 12;
const byte dataPin = 11;

const byte row[] = {B11111110, B11111101, B11111011, B11110111, B11101111, B11011111, B10111111, B01111111};

const byte H[] = {B01100110, B01100110, B01100110, B01111110, B01111110, B01100110, B01100110, B01100110,};
const byte E[] = {B01111110, B01111110, B01100000, B01111110, B01111110, B01100000, B01111110, B01111110};
const byte L[] = {B01100000, B01100000, B01100000, B01100000, B01100000, B01100000, B01111110, B01111110};
const byte O[] = {B01111110, B01111110, B01100110, B01100110, B01100110, B01100110, B01111110, B01111110};
const byte space[] = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,};

//char message[6] = "HELLO";

const byte* table[6] = { H, E, L, L, O, space };

void setup() {
  //Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  for (byte count = 0; count < 6; count++) {
    matrixwrite(table[count], 200, 0);
  }
}

void matrixwrite(const byte pattern[], int times, int dlyVal ) {
  for (int counter = 0; counter < times; counter++) {
    for (int i = 0 ; i < 8 ; i++) {
      digitalWrite(latchPin, LOW);
      shiftOut(dataPin, clockPin, MSBFIRST, row[i]);
      shiftOut(dataPin, clockPin, LSBFIRST, pattern[i]);
      digitalWrite(latchPin, HIGH);
      delay(dlyVal); // Speed each line is written
    }
  }
}