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.
When you want to cast, consider the size of both data, before cast and after cast. If your size `before cast > after cast`, don't do it, because your data will be lost.

In your cast, calculate your before and after size.