Question: I work with code that takes user-defined strings and prints them on a [VGA](https://en.wikipedia.org/wiki/Video_Graphics_Array) monitor, using predefined font arrays saved in a header file. But there are lines of code that I couldn't understand in other source codes, like these ones: 

```
uint8_t *rowoftext ; 
char *text[20] = {"string1","string2",.......,"srting20"};

```

What does this line really do?

```
rowoftext = (uint8_t *)text[textrow++];

```

How do I equalize an array of uint8\_t pointers to another pointer?
Do I understand it well, or what does this line do?

Answer: 
The bit `(uint8_t *)` is called a *cast*. It converts one type to another, in this case one pointer type to another pointer type. This is very dangerous if the pointed-to objects aren't compatible, but in this case they are.
I think it should be char \*text[20] instead of char text[20]. Otherwise, it doesn't make sense.

Anyway, the above code is casting a character pointer to a uint8\_t type pointer. It's better you avoid such casts. This works since both of them take only a byte. But, in general it's better to avoid them.